aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFreddie Chopin <freddie.chopin@gmail.com>2012-08-17 11:54:24 +0200
committerFreddie Chopin <freddie.chopin@gmail.com>2012-08-29 06:26:21 +0000
commit07158a7f8a5897f28e988969029e692ac106b2bc (patch)
treea9a8786debc72552d110a8e8aeb8770c2efdbd95 /src
parent73d87c6210bcd049b738583973fefdea0e32c6fa (diff)
downloadriscv-openocd-07158a7f8a5897f28e988969029e692ac106b2bc.zip
riscv-openocd-07158a7f8a5897f28e988969029e692ac106b2bc.tar.gz
riscv-openocd-07158a7f8a5897f28e988969029e692ac106b2bc.tar.bz2
Add another scripts search path for Windows builds
Add single "scripts" folder to search path for Windows OpenOCD builds that don't use cygwin bin/openocd.exe scripts/interface/dummy.cfg scripts/target/at91eb40a.cfg Do some refactoring of current code (thx to Andreas). Change-Id: Idbb08d1368b06f25da44f4f9ab1511db992b1724 Signed-off-by: Freddie Chopin <freddie.chopin@gmail.com> Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/785 Tested-by: jenkins
Diffstat (limited to 'src')
-rw-r--r--src/helper/options.c65
1 files changed, 37 insertions, 28 deletions
diff --git a/src/helper/options.c b/src/helper/options.c
index 98cd634..e6b0f64 100644
--- a/src/helper/options.c
+++ b/src/helper/options.c
@@ -55,43 +55,52 @@ int configuration_output_handler(struct command_context *context, const char *li
static void add_default_dirs(void)
{
#ifdef _WIN32
+ char strExePath[MAX_PATH];
+ char *path;
+ GetModuleFileName(NULL, strExePath, MAX_PATH);
+
+ /* Strip executable file name, leaving path */
+ *strrchr(strExePath, '\\') = '\0';
+
+ /* Convert path separators to UNIX style, should work on Windows also. */
+ for (char *p = strExePath; *p; p++) {
+ if (*p == '\\')
+ *p = '/';
+ }
+
/* Add the parent of the directory where openocd.exe resides to the
* config script search path.
- * Directory layout:
- * bin\openocd.exe
- * lib\openocd
+ *
+ * bin/openocd.exe
+ * interface/dummy.cfg
+ * target/at91eb40a.cfg
*/
- {
- char strExePath[MAX_PATH];
- GetModuleFileName(NULL, strExePath, MAX_PATH);
- /* Either this code will *always* work or it will SEGFAULT giving
- * excellent information on the culprit.
- */
- *strrchr(strExePath, '\\') = 0;
- strcat(strExePath, "\\..");
- add_script_search_dir(strExePath);
+ path = alloc_printf("%s%s", strExePath, "/..");
+ if (path) {
+ add_script_search_dir(path);
+ free(path);
}
- /*
- * Add support for the default (as of 20091118) layout when
- * using autotools and cygwin/MinGW to build native binary.
- * Path separator is converted to UNIX style so that MinGW is
- * pleased.
+ /* Add support for the directory layout resulting from a 'make install'.
*
* bin/openocd.exe
* share/openocd/scripts/interface/dummy.cfg
* share/openocd/scripts/target/at91eb40a.cfg
*/
- {
- char strExePath[MAX_PATH];
- char *p;
- GetModuleFileName(NULL, strExePath, MAX_PATH);
- *strrchr(strExePath, '\\') = 0;
- strcat(strExePath, "/../share/"PACKAGE "/scripts");
- for (p = strExePath; *p; p++) {
- if (*p == '\\')
- *p = '/';
- }
- add_script_search_dir(strExePath);
+ path = alloc_printf("%s%s", strExePath, "/../share/" PACKAGE "/scripts");
+ if (path) {
+ add_script_search_dir(path);
+ free(path);
+ }
+ /* Add single "scripts" folder to search path for Windows OpenOCD builds that don't use cygwin
+ *
+ * bin/openocd.exe
+ * scripts/interface/dummy.cfg
+ * scripts/target/at91eb40a.cfg
+ */
+ path = alloc_printf("%s%s", strExePath, "/../scripts");
+ if (path) {
+ add_script_search_dir(path);
+ free(path);
}
#else
/*