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
__archive__
Freddie Chopin 2012-08-17 11:54:24 +02:00
parent 73d87c6210
commit 07158a7f8a
1 changed files with 37 additions and 28 deletions

View File

@ -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 = '/';
path = alloc_printf("%s%s", strExePath, "/../share/" PACKAGE "/scripts");
if (path) {
add_script_search_dir(path);
free(path);
}
add_script_search_dir(strExePath);
/* 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
/*