Changeset 1d6ec3 in git


Ignore:
Timestamp:
Dec 17, 2012, 5:58:15 PM (11 years ago)
Author:
Oleksandr Motsak <motsak@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
2cdd72c35095d3ff171783d5f5a677d4f6658c96
Parents:
f51a5bd5a84a0bdc21e8b4b7357a3d1f43bae4e6f4399e865a8d7da06b4d0e0a3d19e4c3acc2d8dc
Message:
Merge pull request #236 from alexanderdreyer/spielwiese-pyobject

Spielwiese's pyobject uses LIB("pyobject.so") again
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • Singular/Makefile.am

    rf51a5b r1d6ec3  
    1616CXXTEMPLFLAGS =-ftrapv ## -fno-implicit-templates
    1717
    18 AM_CPPFLAGS = -I${top_srcdir} -I${top_builddir} -I${top_srcdir}/numeric -I${top_builddir}/numeric -I${top_srcdir}/kernel -I${top_builddir}/kernel -I${top_srcdir}/libpolys -I${top_builddir}/libpolys $(GMP_CFLAGS) -I${top_srcdir}/factory/include -I${top_builddir}/factory/include $(FACTORY_CFLAGS) $(NTL_CFLAGS) $(FLINT_CFLAGS)
     18AM_CPPFLAGS = -I${top_srcdir} -I${top_builddir} -I${top_srcdir}/numeric -I${top_builddir}/numeric -I${top_srcdir}/kernel -I${top_builddir}/kernel -I${top_srcdir}/libpolys -I${top_builddir}/libpolys $(GMP_CFLAGS) -I${top_srcdir}/factory/include -I${top_builddir}/factory/include $(FACTORY_CFLAGS) $(NTL_CFLAGS) $(FLINT_CFLAGS) ${EMBED_PYOBJECT_CFLAGS}
    1919
    2020########################### libSingular* #########################
     
    222222Singularg_SOURCES = tesths.cc fegetopt.c fegetopt.h utils.cc  utils.h
    223223
    224 Singular_LDADD = libSingular.la ${top_builddir}/numeric/libnumeric.la ${top_builddir}/kernel/libkernel.la ${top_builddir}/libpolys/polys/libpolys.la -lcoeffs -lreporter -lmisc $(FACTORY_LIBS) -lomalloc -lfindexec $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS} ${USEPPROCSDYNAMICLD}
    225 Singularg_LDADD = libSingular_g.la ${top_builddir}/numeric/libnumeric_g.la ${top_builddir}/kernel/libkernel_g.la ${top_builddir}/libpolys/polys/libpolys_g.la -lcoeffs_g -lreporter_g -lmisc_g $(FACTORY_LIBS) -lomalloc_g -lfindexec_g $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS}  ${USEPPROCSDYNAMICLD}
     224Singular_LDADD = libSingular.la ${top_builddir}/numeric/libnumeric.la ${top_builddir}/kernel/libkernel.la ${top_builddir}/libpolys/polys/libpolys.la -lcoeffs -lreporter -lmisc $(FACTORY_LIBS) -lomalloc -lfindexec $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS} ${USEPPROCSDYNAMICLD} ${EMBED_PYOBJECT_LDFLAGS}
     225Singularg_LDADD = libSingular_g.la ${top_builddir}/numeric/libnumeric_g.la ${top_builddir}/kernel/libkernel_g.la ${top_builddir}/libpolys/polys/libpolys_g.la -lcoeffs_g -lreporter_g -lmisc_g $(FACTORY_LIBS) -lomalloc_g -lfindexec_g $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS}  ${USEPPROCSDYNAMICLD} ${EMBED_PYOBJECT_LDFLAGS}
    226226
    227227Singular_CPPFLAGS = ${AM_CPPFLAGS} -DHAVE_CONFIG_H -DNDEBUG -DOM_NDEBUG
     
    244244nodist_Singulardg_SOURCES =  libSingular_g.la
    245245
    246 Singulard_LDADD = libSingular.la -lnumeric -lkernel -lpolys -lcoeffs -lreporter -lmisc $(FACTORY_LIBS) -lomalloc -lfindexec $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS} ${USEPPROCSDYNAMICLD}
    247 Singulardg_LDADD = libSingular_g.la -lnumeric_g -lkernel_g -lpolys_g -lcoeffs_g -lreporter_g -lmisc_g $(FACTORY_LIBS) -lomalloc_g -lfindexec_g $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS}  ${USEPPROCSDYNAMICLD}
     246Singulard_LDADD = libSingular.la -lnumeric -lkernel -lpolys -lcoeffs -lreporter -lmisc $(FACTORY_LIBS) -lomalloc -lfindexec $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS} ${USEPPROCSDYNAMICLD} ${EMBED_PYOBJECT_LDFLAGS}
     247Singulardg_LDADD = libSingular_g.la -lnumeric_g -lkernel_g -lpolys_g -lcoeffs_g -lreporter_g -lmisc_g $(FACTORY_LIBS) -lomalloc_g -lfindexec_g $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS}  ${USEPPROCSDYNAMICLD} ${EMBED_PYOBJECT_LDFLAGS}
    248248
    249249Singulard_CPPFLAGS = ${AM_CPPFLAGS} -DHAVE_CONFIG_H -DNDEBUG -DOM_NDEBUG
     
    332332test_s_g_SOURCES = test.cc
    333333
    334 test_s_r_LDADD = libSingular.la -lnumeric -lkernel -lpolys -lcoeffs -lreporter -lmisc $(FACTORY_LIBS) -lomalloc -lfindexec $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS} ${USEPPROCSDYNAMICLD}
    335 test_s_g_LDADD = libSingular_g.la -lnumeric_g -lkernel_g -lpolys_g -lcoeffs_g -lreporter_g -lmisc_g $(FACTORY_LIBS) -lomalloc_g -lfindexec_g $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS}  ${USEPPROCSDYNAMICLD}
     334test_s_r_LDADD = libSingular.la -lnumeric -lkernel -lpolys -lcoeffs -lreporter -lmisc $(FACTORY_LIBS) -lomalloc -lfindexec $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS} ${USEPPROCSDYNAMICLD} ${EMBED_PYOBJECT_LDFLAGS}
     335test_s_g_LDADD = libSingular_g.la -lnumeric_g -lkernel_g -lpolys_g -lcoeffs_g -lreporter_g -lmisc_g $(FACTORY_LIBS) -lomalloc_g -lfindexec_g $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS}  ${USEPPROCSDYNAMICLD} ${EMBED_PYOBJECT_LDFLAGS}
    336336
    337337test_s_r_CPPFLAGS = ${AM_CPPFLAGS} -DHAVE_CONFIG_H -DNDEBUG -DOM_NDEBUG
     
    353353test_d_g_SOURCES = test.cc
    354354
    355 test_d_r_LDADD = libSingular.la -lnumeric -lkernel -lpolys -lcoeffs -lreporter -lmisc $(FACTORY_LIBS) -lomalloc -lfindexec $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS} ${USEPPROCSDYNAMICLD}
    356 test_d_g_LDADD = libSingular_g.la -lnumeric_g -lkernel_g -lpolys_g -lcoeffs_g -lreporter_g -lmisc_g $(FACTORY_LIBS) -lomalloc_g -lfindexec_g $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS}  ${USEPPROCSDYNAMICLD}
     355test_d_r_LDADD = libSingular.la -lnumeric -lkernel -lpolys -lcoeffs -lreporter -lmisc $(FACTORY_LIBS) -lomalloc -lfindexec $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS} ${USEPPROCSDYNAMICLD} ${EMBED_PYOBJECT_LDFLAGS}
     356test_d_g_LDADD = libSingular_g.la -lnumeric_g -lkernel_g -lpolys_g -lcoeffs_g -lreporter_g -lmisc_g $(FACTORY_LIBS) -lomalloc_g -lfindexec_g $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS}  ${USEPPROCSDYNAMICLD} ${EMBED_PYOBJECT_LDFLAGS}
    357357
    358358test_d_r_CPPFLAGS = ${AM_CPPFLAGS} -DHAVE_CONFIG_H -DNDEBUG -DOM_NDEBUG
     
    392392        ln -snf ${top_builddir}/libpolys/polys/.libs/ ${builddir}/MOD
    393393
    394 if PYTHON_USE
     394if PYTHON_MODULE
    395395   moduledir = $(bindir)/MOD
    396396   module_LTLIBRARIES = pyobject.la
  • Singular/extra.cc

    rf51a5b r1d6ec3  
    29482948         res->rtyp = NONE;
    29492949         return FALSE;
    2950        }
    2951        else
    2952 
    2953   /*==== pyobject (or pyobject*, like pyobject.so) force loading python ===*/
    2954        if (strncmp(sys_cmd, "pyobject", 8) == 0)
    2955        {
    2956          res->rtyp = NONE;
    2957          return pyobject_ensure();
    29582950       }
    29592951       else
  • Singular/iparith.cc

    rf51a5b r1d6ec3  
    51555155  char libnamebuf[256];
    51565156  lib_types LT = type_of_LIB(s, libnamebuf);
     5157
    51575158#ifdef HAVE_DYNAMIC_LOADING
    51585159  extern BOOLEAN load_modules(char *newlib, char *fullpath, BOOLEAN autoexport);
     
    51945195        return bo;
    51955196      }
     5197      case LT_BUILTIN:
     5198        SModulFunc_t iiGetBuiltinModInit(char*);
     5199        return load_builtin(s,autoexport, iiGetBuiltinModInit(s));
    51965200      case LT_MACH_O:
    51975201      case LT_ELF:
  • Singular/ipid.h

    rf51a5b r1d6ec3  
    7979
    8080extern idhdl      currRingHdl;
     81/* ================================================================== */
     82/* module support */
     83typedef int (*SModulFunc_t)(SModulFunctions*);
     84BOOLEAN load_builtin(char *newlib, BOOLEAN autoexport, SModulFunc_t init);
     85void module_help_main(char *newlib,const char *help);
     86void module_help_proc(char *newlib,const char *p, const char *help);
     87
     88/* ================================================================== */
     89
    8190/*extern ring     currRing;  in ring.h */
    8291/*extern ideal      currQuotient; in structs.h */
  • Singular/iplib.cc

    rf51a5b r1d6ec3  
    672672}
    673673
     674int huhu_mod_init(SModulFunctions*){ return 0; }
     675
     676#define SI_GET_BUILTIN_MOD_INIT(name) \
     677  int name##_mod_init(SModulFunctions*); \
     678  if (strcmp(libname, #name ".so") == 0) {  return name##_mod_init; }
     679
     680
     681SModulFunc_t
     682iiGetBuiltinModInit(char* libname)
     683{
     684  SI_FOREACH_BUILTIN(SI_GET_BUILTIN_MOD_INIT)
     685
     686  return NULL;
     687}
     688
     689
     690#undef SI_GET_BUILTIN_MOD_INIT
     691
     692
    674693/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
    675694BOOLEAN iiTryLoadLib(leftv v, const char *id)
     
    684703  idhdl packhdl;
    685704  lib_types LT;
    686 
    687705  for(i=0; suffix[i] != NULL; i++)
    688706  {
     
    700718        LoadResult = load_modules(s,libnamebuf,FALSE);
    701719      #endif
     720      else if (LT==LT_BUILTIN)
     721      {
     722        LoadResult=load_builtin(s,FALSE, iiGetBuiltinModInit(s));
     723      }
    702724      if(!LoadResult )
    703725      {
     
    10221044                               BOOLEAN pstatic,
    10231045                               BOOLEAN(*func)(leftv res, leftv v)));
    1024   typedef int (*fktn2_t)(SModulFunctions*);
    1025   fktn2_t fktn;
     1046  SModulFunc_t fktn;
    10261047  idhdl pl;
    10271048  char *plib = iiConvName(newlib);
     
    10581079    }
    10591080  }
     1081  if (dynl_check_opened(FullName)) {
     1082    if (BVERBOSE(V_LOAD_LIB)) Warn( "%s already loaded", fullname);
     1083    return FALSE;
     1084  }
    10601085  if((IDPACKAGE(pl)->handle=dynl_open(FullName))==(void *)NULL)
    10611086  {
     
    10701095    package s=currPack;
    10711096    currPack=IDPACKAGE(pl);
    1072     fktn = (fktn2_t)dynl_sym(IDPACKAGE(pl)->handle, "mod_init");
     1097    fktn = (SModulFunc_t)dynl_sym(IDPACKAGE(pl)->handle, "mod_init");
    10731098    if( fktn!= NULL)
    10741099    {
     
    10891114#endif /*STATIC */
    10901115}
     1116/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
     1117BOOLEAN load_builtin(char *newlib, BOOLEAN autoexport, SModulFunc_t init)
     1118{
     1119  int iiAddCproc(const char *libname, const char *procname, BOOLEAN pstatic,
     1120                 BOOLEAN(*func)(leftv res, leftv v));
     1121  typedef int (*fktn_t)(int(*iiAddCproc)(const char *libname, const char *procname,
     1122                               BOOLEAN pstatic,
     1123                               BOOLEAN(*func)(leftv res, leftv v)));
     1124  SModulFunc_t fktn;
     1125  idhdl pl;
     1126  char *plib = iiConvName(newlib);
     1127  BOOLEAN RET=TRUE;
     1128  int token;
     1129
     1130  pl = IDROOT->get(plib,0);
     1131  if (pl!=NULL)
     1132  {
     1133    if (BVERBOSE(V_LOAD_LIB)) Warn( "(builtin) %s already loaded", newlib);
     1134    omFree(plib);
     1135    return FALSE;
     1136  }
     1137
     1138  pl = enterid( plib,0, PACKAGE_CMD, &IDROOT,
     1139                TRUE );
     1140  IDPACKAGE(pl)->language = LANG_C;
     1141  IDPACKAGE(pl)->libname=omStrDup(newlib);
     1142
     1143  IDPACKAGE(pl)->handle=(void *)NULL;
     1144  SModulFunctions sModulFunctions;
     1145
     1146  package s=currPack;
     1147  currPack=IDPACKAGE(pl);
     1148  if( init!= NULL)
     1149  {
     1150    sModulFunctions.iiArithAddCmd = iiArithAddCmd;
     1151    if (autoexport) sModulFunctions.iiAddCproc = iiAddCprocTop;
     1152    else            sModulFunctions.iiAddCproc = iiAddCproc;
     1153    (*init)(&sModulFunctions);
     1154  }
     1155  if (BVERBOSE(V_LOAD_LIB)) Print( "// ** loaded (builtin) %s \n", newlib);
     1156  currPack->loaded=1;
     1157  currPack=s;
     1158
     1159  return FALSE;
     1160}
     1161/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
     1162void module_help_main(char *newlib,const char *help)
     1163{
     1164  char *plib = iiConvName(newlib);
     1165  idhdl pl = IDROOT->get(plib,0);
     1166  if ((pl==NULL)||(IDTYP(pl)!=PACKAGE_CMD))
     1167    Werror(">>%s<< is not a package",plib);
     1168  else
     1169  {
     1170    package s=currPack;
     1171    currPack=IDPACKAGE(pl);
     1172    idhdl h=enterid(omStrDup("info"),0,STRING_CMD,&IDROOT,FALSE);
     1173    IDSTRING(h)=omStrDup(help);
     1174    currPack=s;
     1175  }
     1176}
     1177void module_help_proc(char *newlib,const char *p, const char *help)
     1178{
     1179  char *plib = iiConvName(newlib);
     1180  idhdl pl = IDROOT->get(plib,0);
     1181  if ((pl==NULL)||(IDTYP(pl)!=PACKAGE_CMD))
     1182    Werror(">>%s<< is not a package",plib);
     1183  else
     1184  {
     1185    package s=currPack;
     1186    currPack=IDPACKAGE(pl);
     1187    char buff[256];
     1188    buff[255]='\0';
     1189    strncpy(buff,p,255);
     1190    strncat(buff,"_help",255-strlen(p));
     1191    idhdl h=enterid(omStrDup(buff),0,STRING_CMD,&IDROOT,FALSE);
     1192    IDSTRING(h)=omStrDup(help);
     1193    currPack=s;
     1194  }
     1195}
     1196/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
    10911197
    10921198// loads a dynamic module from the binary path and returns a named function
  • Singular/pyobject.cc

    rf51a5b r1d6ec3  
    413413  size_t size(leftv iter, size_t distance = 0) const
    414414  {
    415     if (iter) { do { ++distance; } while(iter = iter->next); };
     415    if (iter) { do { ++distance; } while((iter = iter->next)); };
    416416    return distance;
    417417  }
     
    463463  sync_contexts();
    464464
    465   Py_XINCREF(Py_None);
     465  Py_INCREF(Py_None);
    466466  return PythonCastStatic<>(Py_None).assign_to(result);
    467467}
     
    496496  sync_contexts();
    497497
    498   Py_XINCREF(Py_None);
     498  Py_INCREF(Py_None);
    499499  return PythonCastStatic<>(Py_None).assign_to(result);
    500500}
     
    503503void* pyobject_Init(blackbox*)
    504504{
    505   Py_XINCREF(Py_None);
     505  Py_INCREF(Py_None);
    506506  return Py_None;
    507507}
     
    715715
    716716#define PYOBJECT_ADD_C_PROC(name) \
    717   add_C_proc((currPack->libname? currPack->libname: ""), (char*)#name, FALSE, name);
    718 
    719 typedef  BOOLEAN (*func_type)(leftv, leftv);
    720 void pyobject_init(int (*add_C_proc)(const char*, const char*, BOOLEAN,
    721                                      func_type) )
     717  psModulFunctions->iiAddCproc((currPack->libname? currPack->libname: ""),\
     718     (char*)#name, FALSE, name);
     719
     720int pyobject_mod_init(SModulFunctions* psModulFunctions)
    722721{
    723722  int tok = -1;
     
    734733    bbx->blackbox_Op3     = pyobject_Op3;
    735734    bbx->blackbox_OpM     = pyobject_OpM;
    736     bbx->data             = omAlloc0(newstruct_desc_size());
     735    bbx->data             = (void*)omAlloc0(newstruct_desc_size());
    737736   
    738737    PythonInterpreter::init(tok);
     
    742741    PYOBJECT_ADD_C_PROC(python_run);
    743742  }
     743  return 0;
    744744}
    745745#undef PYOBJECT_ADD_C_PROC
     
    747747#ifndef EMBED_PYTHON
    748748extern "C" {
    749   void mod_init(SModulFunctions* psModulFunctions)
     749  int mod_init(SModulFunctions* psModulFunctions)
    750750  {
    751     pyobject_init(psModulFunctions->iiAddCproc);
     751    return pyobject_mod_init(psModulFunctions);
    752752  }
    753753}
  • Singular/pyobject_setup.cc

    rf51a5b r1d6ec3  
    1919#include <Singular/ipshell.h>
    2020
    21 /* whether pyobject module is linked statically or dynamically */
    22 
    23 #ifdef EMBED_PYTHON // Case: we include the pyobject interface in the binary
    24 
    25 #ifdef HAVE_PYTHON
     21#ifdef EMBED_PYTHON
    2622#include "pyobject.cc"
    27 static BOOLEAN pyobject_load()
    28 {
    29    pyobject_init(iiAddCproc);
    30    return FALSE;
    31 }
    32 
    33 #else // Forced embedding, but no (development version of) python available!
    34 static BOOLEAN pyobject_load() { return TRUE; }
    3523#endif
    3624
    37 
    38 # else // Case: pyobject may be loaded from a dynamic module (prefered variant)
    39 // Note: we do not need python at compile time.
    4025static BOOLEAN pyobject_load()
    4126{
    4227  return jjLOAD("pyobject.so", TRUE);
    4328}
    44 #endif
    45 
    46 
    4729
    4830/// blackbox support - initialization via autoloading
  • Singular/tesths.cc

    rf51a5b r1d6ec3  
    181181  errorreported = 0;
    182182
     183  // -- example for "static" modules ------
     184  //load_builtin("huhu.so",FALSE,(SModulFunc_t)huhu_mod_init);
     185  //module_help_main("huhu.so","Help for huhu\nhaha\n");
     186  //module_help_proc("huhu.so","p","Help for huhu::p\nhaha\n");
    183187  setjmp(si_start_jmpbuf);
    184188
  • libpolys/configure.ac

    rf51a5b r1d6ec3  
    132132AC_DEFINE([NOSTREAMIO],[1],[DISABLE_GMP_CPP])
    133133
     134AX_PYTHON_DEFAULT()
     135AX_PYTHON_WITH_VERSION([2.4])
     136
    134137## AC_DEFINE([HAVE_POLYEXTENSIONS], [1], [Enable the algebraic & transcendental extensions])
    135138
  • libpolys/polys/mod_raw.cc

    rf51a5b r1d6ec3  
    55 * ABSTRACT: machine depend code for dynamic modules
    66 *
    7  * Provides: dynl_open()
     7 * Provides: dynl_check_opened()
     8 *           dynl_open()
    89 *           dynl_sym()
    910 *           dynl_error()
     
    3334/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
    3435#define BYTES_TO_CHECK 7
     36
     37#define SI_BUILTIN_LIBSTR(name) (char*) #name ".so",
     38
     39char* si_bultin_libs[]={ SI_FOREACH_BUILTIN(SI_BUILTIN_LIBSTR)  NULL };
     40
     41#undef SI_BUILTIN_LIBSTR
    3542
    3643lib_types type_of_LIB(char *newlib, char *libnamebuf)
     
    4249  const unsigned char mach_O64[]={0xcf,0xfa,0xed,0xfe,0};
    4350   
     51  int i=0;
     52  while(si_bultin_libs[i]!=NULL)
     53  {
     54    if (strcmp(newlib,si_bultin_libs[i])==0)
     55    {
     56      if(libnamebuf!=NULL) strcpy(libnamebuf,newlib);
     57      return LT_BUILTIN;
     58    }
     59    i++;
     60  }
    4461  char        buf[BYTES_TO_CHECK+1];        /* one extra for terminating '\0' */
    4562  struct stat sb;
     
    93110    goto lib_type_end;
    94111  }
    95    
     112
     113
    96114  if( (strncmp(buf, "\02\020\01\016\05\022@", 7)==0))
    97115  {
     
    207225#endif
    208226
    209 #if defined(__APPLE__) && defined(__MACH__)
     227#if defined(ix86Mac_darwin)
     228#define HAVE_ELF_SYSTEM
     229#endif
     230
     231#if defined(x86_64Mac_darwin)
    210232#define HAVE_ELF_SYSTEM
    211233#endif
     
    220242
    221243static void* kernel_handle = NULL;
     244int dynl_check_opened(
     245  char *filename    /* I: filename to check */
     246  )
     247{
     248  return dlopen(filename,RTLD_NOW|RTLD_NOLOAD) != NULL;
     249}
     250
    222251void *dynl_open(
    223252  char *filename    /* I: filename to load */
     
    265294typedef char *((*func_ptr) ());
    266295
     296int dynl_check_opened(    /* NOTE: untested */
     297  char *filename    /* I: filename to check */
     298  )
     299{
     300  struct shl_descriptor *desc;
     301  for (int idx = 0; shl_get(idx, &desc) != -1; ++idx)
     302  {
     303    if (strcmp(filename, desc->filename) == 0) return TRUE;
     304  }
     305  return FALSE;
     306}
     307
    267308void *dynl_open(char *filename)
    268309{
     
    308349#ifndef DL_IMPLEMENTED
    309350
     351int dynl_check_opened(char *filename)
     352{
     353  return FALSE;
     354}
     355
    310356void *dynl_open(char *filename)
    311357{
  • libpolys/polys/mod_raw.h

    rf51a5b r1d6ec3  
     1
    12#ifndef MOD_RAW_H
    23#define MOD_RAW_H
     
    78 * ABSTRACT: machine depend code for dynamic modules
    89 *
    9  * Provides: dynl_open()
     10 * Provides: dynl_check_opened()
     11 *           dynl_open()
    1012 *           dynl_sym()
    1113 *           dynl_error()
     
    1315*/
    1416
    15 typedef enum { LT_NONE, LT_NOTFOUND, LT_SINGULAR, LT_ELF, LT_HPUX, LT_MACH_O} lib_types;
     17typedef enum { LT_NONE, LT_NOTFOUND, LT_SINGULAR, LT_ELF, LT_HPUX, LT_MACH_O, LT_BUILTIN} lib_types;
    1618
    1719lib_types type_of_LIB(char *newlib, char *fullname);
     
    2628extern "C" {
    2729#endif
     30int          dynl_check_opened(char* filename);
    2831void *       dynl_open(char *filename);
    2932// if handle == DYNL_KERNEL_HANDLE, then symbol is searched for
     
    3942
    4043#endif /* HAVE_DL */
     44
     45
     46#ifdef EMBED_PYTHON
     47#define SI_BUILTIN_PYOBJECT(add) add(pyobject)
     48#else
     49#define SI_BUILTIN_PYOBJECT(add)
     50#endif
     51
     52/// Data for @c type_of_LIB to determine built-in modules,
     53/// use @c add(name) to add built-in library to macro
     54#define SI_FOREACH_BUILTIN(add)\
     55  add(huhu)\
     56  SI_BUILTIN_PYOBJECT(add)
     57
     58
    4159#endif /* MOD_RAW_H */
  • m4/ax_python_with_version.m4

    rf51a5b r1d6ec3  
    2828        AC_ARG_WITH(
    2929            python,
    30             AS_HELP_STRING([--with-python@<:@=PYTHON@:>@],
     30            AS_HELP_STRING([--with-python@<:@=@<:@embed,@:>@PYTHON@:>@],
    3131                [absolute path name of Python executable]
    3232            ),
    3333            [],[withval="yes"]
    3434        )
     35        py_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
     36        for elt in $withval; do
     37          IFS="$py_save_ifs"
     38          case $elt in
     39            embed|embedding)
     40              si_try_embed=true
     41            ;;
     42            static|dynamic|shared|module)
     43            ;;
     44            *)
     45            si_withval=$elt
     46          esac
     47        done
     48        IFS="$py_save_ifs"
     49        if test x"$si_withval" = x""
     50        then
     51           withval="yes"
     52        else
     53           withval="$si_withval"
     54        fi
     55
    3556        AC_MSG_RESULT($withval)
    3657        if test "$withval" = "no"
     
    5980                AX_PYTHON_VERSION_CHECK([$1],
    6081                                        [ ax_python_use=true
     82                                          si_embed_python=$si_try_embed
    6183                                          AC_MSG_RESULT(yes)
    6284                                          AX_PYTHON_PREFIX( )
     
    6486                                          AX_PYTHON_CSPEC( )
    6587                                        ],
    66                                         [ax_python_use=false; AC_MSG_RESULT([too old, skipping python interface!])]
     88                                        [ax_python_use=false
     89                                         AC_MSG_RESULT([too old, skipping python interface!])]
    6790                )
    6891            fi
    6992        fi   
    7093        AM_CONDITIONAL(PYTHON_USE, test x"$ax_python_use" = x"true")
     94        AM_CONDITIONAL(SI_EMBED_PYTHON, test x"$si_embed_python" = x"true")
     95
     96        if  test x"$si_embed_python" = x"true"
     97        then
     98          AC_DEFINE(EMBED_PYTHON,1,integrate python)
     99          AC_SUBST(EMBED_PYOBJECT_CFLAGS,"\${PYTHON_CSPEC}")
     100          AC_SUBST(EMBED_PYOBJECT_LDFLAGS,"\${PYTHON_LSPEC}")
     101        fi
     102
     103        AM_CONDITIONAL(PYTHON_MODULE, test x"$si_embed_python" != x"true")
    71104    fi
    72105
Note: See TracChangeset for help on using the changeset viewer.