X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=common%2Ftrace_resource.cpp;h=04ac32709dfa09eea11d1d1951dee9948282cf26;hb=45080ce539648a3fc073375cd9212b031a611f10;hp=35d2b1a73cc6a9464b3bee03720ee1cd85a4df23;hpb=ab6ded73916c5ea5ffee7a44b5c00eab78626b1c;p=apitrace diff --git a/common/trace_resource.cpp b/common/trace_resource.cpp index 35d2b1a..04ac327 100644 --- a/common/trace_resource.cpp +++ b/common/trace_resource.cpp @@ -35,39 +35,75 @@ namespace trace { - os::String -findFile(const char *relPath, - const char *absPath, - bool verbose) +findProgram(const char*programFilename) { - os::String complete; + os::String programPath; + + os::String processDir = os::getProcessName(); + processDir.trimFilename(); - /* First look in the same directory from which this process is - * running, (to support developers running a compiled program that - * has not been installed. */ - os::String process_dir = os::getProcessName(); - process_dir.trimFilename(); + programPath = processDir; + programPath.join(programFilename); + if (programPath.exists()) { + return programPath; + } + +#ifndef _WIN32 + // Try absolute install directory + programPath = APITRACE_PROGRAMS_INSTALL_DIR; + programPath.join(programFilename); + if (programPath.exists()) { + return programPath; + } +#endif - complete = process_dir; - complete.join(relPath); + return ""; +} - if (complete.exists()) - return complete; +os::String +findWrapper(const char *wrapperFilename) +{ + os::String wrapperPath; - /* Second, look in the directory for installed wrappers. */ - complete = absPath; - if (complete.exists()) - return complete; + os::String processDir = os::getProcessName(); + processDir.trimFilename(); - if (verbose) { - std::cerr << "error: cannot find " << relPath << " or " << absPath << "\n"; + // Try relative build directory + // XXX: Just make build and install directory layout match + wrapperPath = processDir; + wrapperPath.join("wrappers"); + wrapperPath.join(wrapperFilename); + if (wrapperPath.exists()) { + return wrapperPath; } + // Try relative install directory + wrapperPath = processDir; +#if defined(_WIN32) + wrapperPath.join("..\\lib\\wrappers"); +#elif defined(__APPLE__) + wrapperPath.join("../lib/wrappers"); +#else + wrapperPath.join("../lib/apitrace/wrappers"); +#endif + wrapperPath.join(wrapperFilename); + if (wrapperPath.exists()) { + return wrapperPath; + } + +#ifndef _WIN32 + // Try absolute install directory + wrapperPath = APITRACE_WRAPPERS_INSTALL_DIR; + wrapperPath.join(wrapperFilename); + if (wrapperPath.exists()) { + return wrapperPath; + } +#endif + return ""; } - os::String findScript(const char *scriptFilename) { @@ -101,7 +137,7 @@ findScript(const char *scriptFilename) #ifndef _WIN32 // Try absolute install directory - scriptPath = APITRACE_WRAPPER_INSTALL_DIR; + scriptPath = APITRACE_SCRIPTS_INSTALL_DIR; scriptPath.join(scriptFilename); if (scriptPath.exists()) { return scriptPath;