This is an automated email from Gerrit. Andreas Fritiofson ([email protected]) just uploaded a new patch set to Gerrit, which you can find at http://openocd.zylin.com/1796
-- gerrit commit 6a35b8d63054d65635800027f2c8f99a77bc759b Author: Andreas Fritiofson <[email protected]> Date: Sat Jul 27 17:27:01 2013 +0200 Remove special handling of script search path on Windows On all platforms, search for scripts in $HOME/.openocd ${run_prefix}${pkgdatadir}/site ${run_prefix}${pkgdatadir}/scripts On Windows, set run_prefix to the runtime path of the executable, minus ${bindir}. This is to enable the install dir to be moved anywhere, as long as the structure of the install dir is kept intact. On all other platforms, run_prefix is empty. The script paths can now be adjusted on Windows builds the normal way; by overriding pkgdatadir at build time. For example, to create a Windows package layout of bin/openocd.exe scripts/interface/... scripts/target/... you can do configure --prefix= --enable-... and then make pkgdatadir= DESTDIR=/some/path clean all install Also, remove the unused PKGLIBDIR define. Change-Id: If2c8228fc80c598d763efad21c5f51695ff9b6cf Signed-off-by: Andreas Fritiofson <[email protected]> diff --git a/common.mk b/common.mk index 1cb0743..f301c3a 100644 --- a/common.mk +++ b/common.mk @@ -4,7 +4,7 @@ AM_CPPFLAGS = -I$(top_srcdir)/src \ -I$(top_builddir)/src \ -I$(top_srcdir)/src/helper \ -DPKGDATADIR=\"$(pkgdatadir)\" \ - -DPKGLIBDIR=\"$(pkglibdir)\" + -DBINDIR=\"$(bindir)\" if INTERNAL_JIMTCL AM_CPPFLAGS += -I$(top_srcdir)/jimtcl \ diff --git a/src/helper/options.c b/src/helper/options.c index d0a4a70..00f1dbe 100644 --- a/src/helper/options.c +++ b/src/helper/options.c @@ -52,11 +52,29 @@ int configuration_output_handler(struct command_context *context, const char *li return ERROR_OK; } +#ifdef _WIN32 +static char *find_suffix(const char *text, const char *suffix) +{ + size_t text_len = strlen(text); + size_t suffix_len = strlen(suffix); + + if (suffix_len == 0) + return (char *)text + text_len; + + if (suffix_len > text_len || strncmp(text + text_len - suffix_len, suffix, suffix_len) != 0) + return NULL; /* Not a suffix of text */ + + return (char *)text + text_len - suffix_len; +} +#endif + static void add_default_dirs(void) { + const char *run_prefix; + char *path; + #ifdef _WIN32 char strExePath[MAX_PATH]; - char *path; GetModuleFileName(NULL, strExePath, MAX_PATH); /* Strip executable file name, leaving path */ @@ -68,63 +86,45 @@ static void add_default_dirs(void) *p = '/'; } - /* Add the parent of the directory where openocd.exe resides to the - * config script search path. - * - * bin/openocd.exe - * interface/dummy.cfg - * target/at91eb40a.cfg - */ - path = alloc_printf("%s%s", strExePath, "/.."); - if (path) { - add_script_search_dir(path); - free(path); - } - /* 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 - */ - 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); - } + char *end_of_prefix = find_suffix(strExePath, BINDIR); + if (end_of_prefix != NULL) + *end_of_prefix = '\0'; + + run_prefix = strExePath; #else + run_prefix = ""; +#endif + + LOG_DEBUG("bindir=%s", BINDIR); + LOG_DEBUG("pkgdatadir=%s", PKGDATADIR); + LOG_DEBUG("run_prefix=%s", run_prefix); + /* * The directory containing OpenOCD-supplied scripts should be * listed last in the built-in search order, so the user can * override these scripts with site-specific customizations. */ - const char *home = getenv("HOME"); if (home) { - char *path; - path = alloc_printf("%s/.openocd", home); - if (path) { add_script_search_dir(path); free(path); } } - add_script_search_dir(PKGDATADIR "/site"); - add_script_search_dir(PKGDATADIR "/scripts"); -#endif + path = alloc_printf("%s%s%s", run_prefix, PKGDATADIR, "/site"); + if (path) { + add_script_search_dir(path); + free(path); + } + + path = alloc_printf("%s%s%s", run_prefix, PKGDATADIR, "/scripts"); + if (path) { + add_script_search_dir(path); + free(path); + } } int parse_cmdline_args(struct command_context *cmd_ctx, int argc, char *argv[]) -- ------------------------------------------------------------------------------ November Webinars for C, C++, Fortran Developers Accelerate application performance with scalable programming models. Explore techniques for threading, error checking, porting, and tuning. Get the most from the latest Intel processors and coprocessors. See abstracts and register http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk _______________________________________________ OpenOCD-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openocd-devel
