Changeset 1900 in Sophya for trunk/SophyaLib/SysTools
- Timestamp:
- Feb 15, 2002, 6:35:01 PM (24 years ago)
- Location:
- trunk/SophyaLib/SysTools
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/SysTools/cxxcmplnk.cc
r1797 r1900 36 36 37 37 /* --Methode-- */ 38 CxxCompilerLinker::CxxCompilerLinker( )38 CxxCompilerLinker::CxxCompilerLinker(bool fglibsophya, bool fglibextsophya, bool fglibpi) 39 39 : verbose(false) 40 40 { … … 92 92 #endif 93 93 94 #ifndef Darwin 95 linkCmd = compCmd; 96 #else 97 linkCmd = "cc -bundle -flat_namespace -undefined suppress "; 98 linkOptions = "-L/usr/lib/gcc/darwin/default -lstdc++ -lcc_dynamic -lpthread -lm"; 99 #endif 100 94 101 cppFlags += " -I. "; 95 102 compOptions += " -c "; … … 102 109 if (dpcbase[dpcbase.length()-1] != '/') dpcbase += '/'; 103 110 cppFlags += ( " -I" + dpcbase + "Include/ "); 104 linkOptions += " -L" + dpcbase + syscomp + "ShLibs/ -lextsophya -lsophya -lm "; 111 linkOptions += " -L" + dpcbase + syscomp + "ShLibs/"; 112 if (fglibsophya) linkOptions += " -lsophya "; 113 if (fglibextsophya) linkOptions += " -lextsophya "; 114 if (fglibpi) linkOptions += " -lPI "; 105 115 } 106 116 … … 151 161 int CxxCompilerLinker::BuildSO(string const & oname, string & soname) 152 162 { 163 // char * soext = ".dylib"; if defined(Darwin) - pas necessaire Reza 02/2002 164 char * soext = ".so"; 165 153 166 if (soname.length() < 1) { 154 167 size_t l,p,q; … … 158 171 else p++; 159 172 q = oname.find('.'); 160 if (q < l) soname = tmpDir + oname.substr(p, q-p) + ".so";161 else soname = tmpDir + oname.substr(p) + ".so";173 if (q < l) soname = tmpDir + oname.substr(p, q-p) + soext; 174 else soname = tmpDir + oname.substr(p) + soext; 162 175 } 163 176 string cmd; 164 cmd = compCmd + linkOptions + "-o " + soname + " " + oname;177 cmd = linkCmd + " " + oname + " " + linkOptions + " -o " + soname + " " ; 165 178 if (verbose) 166 179 cout << "CxxCompilerLinker::BuildSO() - Executing \n" << cmd << endl; -
trunk/SophyaLib/SysTools/cxxcmplnk.h
r1288 r1900 16 16 class CxxCompilerLinker { 17 17 public: 18 CxxCompilerLinker(); 18 CxxCompilerLinker(bool fglibsophya=true, bool fglibextsophya=true, 19 bool fglibpi=false); 19 20 virtual ~CxxCompilerLinker(); 20 21 … … 47 48 string tmpDir; 48 49 string compCmd; 50 string linkCmd; 49 51 string compOptions; 50 52 string linkOptions; -
trunk/SophyaLib/SysTools/pdlmgr.cc
r1797 r1900 15 15 static const char* sofext = ".so"; 16 16 static const char* sofext_HPUX = ".sl"; 17 static const char* sofext_Darwin = ".bundle"; 17 // static const char* sofext_Darwin = ".dylib"; pas necessaire - Reza 02/2002 18 18 19 19 // Variables et methodes static … … 172 172 cmd = "ld -b -o " + fnameso + " " + fnameobj + " -lm -lc"; 173 173 #elif defined(Darwin) 174 cmd = " ld -bundle -o " + fnameso + " " + fnameobj + " -lm -lcc_dynamic -lSystem -lbundle1.o";174 cmd = "cc -bundle -flat_namespace -o " + fnameso + " " + fnameobj + " -lm -lcc_dynamic -lSystem -lbundle1.o"; 175 175 #else 176 176 cmd = "ld -o " + fnameso + " " + fnameobj + " -lm -lc"; … … 203 203 #ifdef HPUX 204 204 soname += sofext_HPUX; 205 #elif defined(Darwin)206 soname += sofext_Darwin;207 205 #else 208 206 soname += sofext; … … 230 228 else fnameso = soname; 231 229 copy = cp; 230 fnameso = soname; 232 231 soName = fnameso; 233 232 … … 236 235 cerr << "PDynLinkMgr::PDynLinkMgr() Not yet available on HP-UX " << endl; 237 236 return; 238 #elif defined(Darwin)239 int rc = NSCreateObjectFileImageFromFile(fnameso.c_str(), &shfim);240 if (rc != NSObjectFileImageSuccess) {241 cerr << "PDynLinkMgr::PDynLinkMgr(): Error opening SO " << fnameso242 << " (" << soname << ")" << endl;243 cerr << "Loader Error (dlerror()) :" << rc << endl;244 return;245 }246 shmod = NSLinkModule(shfim, fnameso.c_str(), 0);247 237 #else 248 238 dlhandle = dlopen(fnameso.c_str(), RTLD_NOW); … … 265 255 cerr << "PDynLinkMgr::~PDynLinkMgr() Not yet available on HP-UX " << endl; 266 256 return; 267 #elif defined(Darwin)268 NSUnLinkModule(shmod, 0);269 NSDestroyObjectFileImage(shfim);270 257 #else 271 258 if (dlhandle) dlclose(dlhandle); dlhandle = NULL; … … 286 273 cerr << "PDynLinkMgr::GetFunction() Not yet available on HP-UX " << endl; 287 274 return f; 288 #elif defined(Darwin) 289 void* sym = NSLookupSymbolInModule(shmod,funcname.c_str()); 290 f = (DlFunction) NSAddressOfSymbol(sym); 291 return f; 292 #else 275 #else 276 #if defined(Darwin) 277 string funame = "_" + funcname; 278 #else 279 string & funame = funcname; 280 #endif 293 281 if (dlhandle != NULL) 294 f = (DlFunction)dlsym(dlhandle, fun cname.c_str());282 f = (DlFunction)dlsym(dlhandle, funame.c_str()); 295 283 if (f == NULL) cerr << "PDynLinkMgr::GetFunction(): Error linking " << funcname << endl; 296 284 return(f); -
trunk/SophyaLib/SysTools/pdlmgr.h
r1796 r1900 13 13 #include <dl.h> 14 14 #elif defined(Darwin) 15 #include < mach-o/dyld.h>15 #include </sw/include/dlfcn.h> 16 16 #else 17 17 #include <dlfcn.h> … … 43 43 #if defined(HPUX) 44 44 shl_t dlhandle; 45 #elif defined(Darwin)46 NSObjectFileImage shfim;47 NSModule shmod;48 45 #else 49 46 void * dlhandle;
Note:
See TracChangeset
for help on using the changeset viewer.