Changeset 1795 in Sophya for trunk/SophyaLib/SysTools


Ignore:
Timestamp:
Nov 27, 2001, 3:45:55 PM (24 years ago)
Author:
aubourg
Message:

darwin

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/SysTools/pdlmgr.cc

    r1783 r1795  
    44//
    55#include <machdefs.h>
    6 #ifndef OS_MACOSX
    7 // EA : gerer dylib macosx un jour...
    86
    97#include "pdlmgr.h"
     
    1715static const char* sofext = ".so";
    1816static const char* sofext_HPUX = ".sl";
     17static const char* sofext_Darwin = ".bundle";
    1918
    2019// Variables et methodes static
     
    171170#elif defined(HPUX)
    172171  cmd = "ld -b -o " + fnameso + " " + fnameobj + " -lm -lc";
     172#elif defined(Darwin)
     173  cmd = "ld -bundle -o " + fnameso + " " + fnameobj + " -lm -lc";
    173174#else
    174175  cmd = "ld -o " + fnameso + " " + fnameobj + " -lm -lc";
     
    193194PDynLinkMgr::PDynLinkMgr(string& soname, bool cp)
    194195{
     196#ifndef Darwin
    195197dlhandle = NULL;
     198#endif
    196199soName = "";
    197200
     
    199202#ifdef HPUX
    200203  soname += sofext_HPUX;
     204#elif defined(Darwin)
     205 soname += sofext_Darwin;
    201206#else
    202207  soname += sofext;
     
    209214#ifndef HPUX
    210215  sprintf(buff,"pdlmgr%d%s", numSO,sofext);
     216#elif defined(Darwin)
     217  sprintf(buff,"pdlmgr%d%s", numSO,sofext_Darwin);
    211218#else
    212219  sprintf(buff,"pdlmgr%d%s", numSO,sofext_HPUX);
     
    228235cerr << "PDynLinkMgr::PDynLinkMgr() Not yet available on HP-UX " << endl;
    229236return;
     237#elif defined(Darwin)
     238 int rc = NSCreateObjectFileImageFromFile(fnameso.c_str(), &shfim);
     239 if (rc != NSObjectFileImageSuccess) {
     240   cerr << "PDynLinkMgr::PDynLinkMgr(): Error opening SO " << fnameso
     241        << " (" << soname << ")" << endl;
     242   cerr << "Loader Error (dlerror()) :" << rc << endl;
     243   return;
     244 }
     245 shmod = NSLinkModule(shfim, fnameso.c_str(), 0);
    230246#else
    231247dlhandle =  dlopen(fnameso.c_str(), RTLD_NOW);
     
    248264cerr << "PDynLinkMgr::~PDynLinkMgr() Not yet available on HP-UX " << endl;
    249265return;
     266#elif defined(Darwin)
     267 NSUnLinkModule(shmod, 0);
     268 NSDestroyObjectFileImage(shfim);
    250269#else
    251270if (dlhandle) dlclose(dlhandle);    dlhandle = NULL;
     
    266285cerr << "PDynLinkMgr::GetFunction() Not yet available on HP-UX " << endl;
    267286return f;
     287#elif defined(Darwin)
     288 void* sym = NSLookupSymbolInModule(shmod,funcname.c_str());
     289 f = (DlFunction) NSAddressOfSymbol(sym);
     290 return f;
    268291#else
    269292if (dlhandle != NULL) 
     
    274297}
    275298
    276 #endif
     299
Note: See TracChangeset for help on using the changeset viewer.