X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=common%2Ftrace_resource.cpp;h=8a1f56cb1b9ca88c825579c98608a6ae5a2c2db1;hb=5f2245e7500f9024ba90e631fd865c9ffac172c2;hp=659fc0594085a2baf1ce13dcf36ee3cf7596cfde;hpb=a19a87e02f91dd0cf4d6217a5ea7125f8509ed85;p=apitrace diff --git a/common/trace_resource.cpp b/common/trace_resource.cpp index 659fc05..8a1f56c 100644 --- a/common/trace_resource.cpp +++ b/common/trace_resource.cpp @@ -37,75 +37,46 @@ namespace trace { os::String -findFile(const char *relPath, - const char *absPath, - bool verbose) +findScript(const char *scriptFilename) { - os::String complete; - - /* 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(); - - complete = process_dir; - complete.join(relPath); - - if (complete.exists()) - return complete; - - /* Second, look in the directory for installed wrappers. */ - complete = absPath; - if (complete.exists()) - return complete; - - if (verbose) { - std::cerr << "error: cannot find " << relPath << " or " << absPath << "\n"; + os::String scriptPath; + + os::String processDir = os::getProcessName(); + processDir.trimFilename(); + + // Try relative build directory + // XXX: Just make build and install directory layout match + scriptPath = processDir; + scriptPath.join("scripts"); + scriptPath.join(scriptFilename); + if (scriptPath.exists()) { + return scriptPath; } - return ""; -} - - -#define SCRIPTS_SUBDIR "lib/apitrace/scripts" - -os::String -findScript(const char *name) -{ - os::String path; - -#if defined(APITRACE_SOURCE_DIR) - // Try the absolute source path -- useful for development or quick - // experiment. Relative paths don't quite work here due to out of source - // trees. - path = APITRACE_SOURCE_DIR "/scripts"; - path.join(name); - if (path.exists()) { - return path; - } -#endif - + // Try relative install directory + scriptPath = processDir; #if defined(_WIN32) - // Windows has no standard installation path, so find it relatively to the - // process name, which is assumed to be in a bin subdirectory. - path = os::getProcessName(); - path.trimFilename(); - path.join("..\\lib\\apitrace\\scripts"); - path.join(name); - if (path.exists()) { - return path; - } + scriptPath.join("..\\lib\\scripts"); +#elif defined(__APPLE__) + scriptPath.join("../lib/scripts"); #else - // Assume a predefined installation path on Unices - path = APITRACE_INSTALL_PREFIX "/lib/apitrace/scripts"; - path.join(name); - if (path.exists()) { - return path; + scriptPath.join("../lib/apitrace/scripts"); +#endif + scriptPath.join(scriptFilename); + if (scriptPath.exists()) { + return scriptPath; + } + +#ifndef _WIN32 + // Try absolute install directory + scriptPath = APITRACE_SCRIPTS_INSTALL_DIR; + scriptPath.join(scriptFilename); + if (scriptPath.exists()) { + return scriptPath; } #endif - std::cerr << "error: cannot find " << name << "script\n"; + std::cerr << "error: cannot find " << scriptFilename << " script\n"; return ""; }