void createStaticLibrary() { Logger::println("*** Creating static library ***"); #if LDC_LLVM_VER >= 305 const bool isTargetWindows = global.params.targetTriple.isWindowsMSVCEnvironment(); #else const bool isTargetWindows = global.params.targetTriple.getOS() == llvm::Triple::Win32; #endif // find archiver std::string tool(isTargetWindows ? getLib() : getArchiver()); // build arguments std::vector<std::string> args; // ask ar to create a new library if (!isTargetWindows) args.push_back("rcs"); // ask lib to be quiet if (isTargetWindows) args.push_back("/NOLOGO"); // output filename std::string libName; if (global.params.objname) { // explicit libName = global.params.objname; } else { // inferred // try root module name if (Module::rootModule) libName = Module::rootModule->toChars(); else if (global.params.objfiles->dim) libName = FileName::removeExt(static_cast<const char*>(global.params.objfiles->data[0])); else libName = "a.out"; } // KN: The following lines were added to fix a test case failure (runnable/test13774.sh). // Root cause is that dmd handles it in this why. // As a side effect this change broke compiling with dub. // if (!FileName::absolute(libName.c_str())) // libName = FileName::combine(global.params.objdir, libName.c_str()); std::string libExt = std::string(".") + global.lib_ext; if (!endsWith(libName, libExt)) libName.append(libExt); if (isTargetWindows) args.push_back("/OUT:" + libName); else args.push_back(libName); // object files for (unsigned i = 0; i < global.params.objfiles->dim; i++) { const char *p = static_cast<const char *>(global.params.objfiles->data[i]); args.push_back(p); } // create path to the library CreateDirectoryOnDisk(libName); // try to call archiver executeToolAndWait(tool, args, global.params.verbose); }
//#pragma comment(linker, "/EXPORT:NFMIXTHERM=?NFMIXTHERM@@YGXQADAAHPAUEesParamRec@@2@Z") NF_EES_LIB1SHARED_EXPORT void NF_CALLCODE NFQ_LIBR(char s[256], int &mode, struct EesParamRec *input_rec, struct EesParamRec *output_rec) { getLib().getNfq_libr().callDLP(s, mode, input_rec, output_rec); return; }
void createStaticLibrary() { Logger::println("*** Creating static library ***"); #if LDC_LLVM_VER >= 305 const bool isTargetWindows = global.params.targetTriple.isWindowsMSVCEnvironment(); #else const bool isTargetWindows = global.params.targetTriple.getOS() == llvm::Triple::Win32; #endif // find archiver std::string tool(isTargetWindows ? getLib() : getArchiver()); // build arguments std::vector<std::string> args; // ask ar to create a new library if (!isTargetWindows) args.push_back("rcs"); // ask lib to be quiet if (isTargetWindows) args.push_back("/NOLOGO"); // output filename std::string libName; if (global.params.objname) { // explicit libName = global.params.objname; } else { // inferred // try root module name if (Module::rootModule) libName = Module::rootModule->toChars(); else if (global.params.objfiles->dim) libName = FileName::removeExt(static_cast<const char*>(global.params.objfiles->data[0])); else libName = "a.out"; } std::string libExt = std::string(".") + global.lib_ext; if (!endsWith(libName, libExt)) { if (!isTargetWindows) { libName = llvm::sys::path::parent_path(libName).str() + "/lib" + llvm::sys::path::filename(libName).str() + libExt; } else libName.append(libExt); } if (isTargetWindows) args.push_back("/OUT:" + libName); else args.push_back(libName); // object files for (unsigned i = 0; i < global.params.objfiles->dim; i++) { const char *p = static_cast<const char *>(global.params.objfiles->data[i]); args.push_back(p); } // create path to the library CreateDirectoryOnDisk(libName); // try to call archiver executeToolAndWait(tool, args, global.params.verbose); }
NF_EES_LIB1SHARED_EXPORT double NF_CALLCODE NFX_LIBR(char s[256], int &mode, struct EesParamRec *input_rec) { return getLib().getNfx_libr().callDLF(s, mode, input_rec); }