From afc55258097e755b71df0198b7c196614d580d3f Mon Sep 17 00:00:00 2001 From: borutr Date: Sat, 19 Apr 2003 15:19:37 +0000 Subject: [PATCH] introduced setDataPaths() function, {datadir} macro (it will be used by assemblers, which have their own includes, e.g. gpasm) git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2545 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- src/SDCCmain.c | 85 ++++++++++++++++++++++++++++---------------------- 1 file changed, 47 insertions(+), 38 deletions(-) diff --git a/src/SDCCmain.c b/src/SDCCmain.c index 833f356d..ab0e117c 100644 --- a/src/SDCCmain.c +++ b/src/SDCCmain.c @@ -1678,7 +1678,7 @@ setBinPaths(const char *argv0) /* Set system include path */ static void -setIncludePath(const char *argv0) +setIncludePath(const char *datadir) { char *p; char buf[PATH_MAX]; @@ -1688,27 +1688,13 @@ setIncludePath(const char *argv0) * * 1. - $SDCC_INCLUDE * 2. - $SDCC_HOME/PREFIX2DATA_DIR/INCLUDE_DIR_SUFFIX - * 2. - path(argv[0])/BIN2DATA_DIR/INCLUDE_DIR_SUFFIX - * 3. - DATADIR/INCLUDE_DIR_SUFFIX (only on *nix) + * 3. - path(argv[0])/BIN2DATA_DIR/INCLUDE_DIR_SUFFIX + * 4. - DATADIR/INCLUDE_DIR_SUFFIX (only on *nix) */ if ((p = getenv(SDCC_INCLUDE_NAME)) == NULL) { - if ((p = getenv(SDCC_DIR_NAME)) != NULL) { - SNPRINTF(buf, sizeof buf, "%s" PREFIX2DATA_DIR INCLUDE_DIR_SUFFIX, p); - p = buf; - } - else { - if ((p = getBinPath(argv0)) == NULL) - p = "."; - - SNPRINTF(buf, sizeof buf, "%s" BIN2DATA_DIR INCLUDE_DIR_SUFFIX, p); - p = buf; - -#ifndef _WIN32 /* *nix paltform */ - if (!pathExists(p)) - p = DATADIR INCLUDE_DIR_SUFFIX; /* last resort */ -#endif - } + SNPRINTF(buf, sizeof buf, "%s" INCLUDE_DIR_SUFFIX, datadir); + p = buf; } setMainValue ("includedir", p); @@ -1716,7 +1702,7 @@ setIncludePath(const char *argv0) /* Set system lib path */ static void -setLibPath(const char *argv0) +setLibPath(const char *datadir) { char *p; char buf[PATH_MAX]; @@ -1726,30 +1712,54 @@ setLibPath(const char *argv0) * * 1. - $SDCC_LIB * 2. - $SDCC_HOME/PREFIX2DATA_DIR/LIB_DIR_SUFFIX/ - * 2. - path(argv[0])/BIN2DATA_DIR/LIB_DIR_SUFFIX/ - * 3. - DATADIR/LIB_DIR_SUFFIX/ (only on *nix) + * 3. - path(argv[0])/BIN2DATA_DIR/LIB_DIR_SUFFIX/ + * 4. - DATADIR/LIB_DIR_SUFFIX/ (only on *nix) */ if ((p = getenv(SDCC_LIB_NAME)) == NULL) { - if ((p = getenv(SDCC_DIR_NAME)) != NULL) { - SNPRINTF(buf, sizeof buf, "%s" PREFIX2DATA_DIR LIB_DIR_SUFFIX, p); - p = buf; - } - else { - if ((p = getBinPath(argv0)) == NULL) - p = "."; + SNPRINTF(buf, sizeof buf, "%s" LIB_DIR_SUFFIX, datadir); + p = buf; + } + + setMainValue ("libdir", p); +} + +/* Set data path */ +static void +setDataPaths(const char *argv0) +{ + char *p; + char buf[PATH_MAX]; + + /* + * Search logic: + * + * 1. - $SDCC_HOME/PREFIX2DATA_DIR + * 2. - path(argv[0])/BIN2DATA_DIR + * 3. - DATADIR (only on *nix) + */ - SNPRINTF(buf, sizeof buf, "%s" BIN2DATA_DIR LIB_DIR_SUFFIX, p); - p = buf; + if ((p = getenv(SDCC_DIR_NAME)) != NULL) { + SNPRINTF(buf, sizeof buf, "%s" PREFIX2DATA_DIR, p); + p = buf; + } + else { + if ((p = getBinPath(argv0)) == NULL) + p = "."; -#ifndef _WIN32 /* *nix palforn */ - if (!pathExists(p)) - p = DATADIR LIB_DIR_SUFFIX; /* last resort */ + SNPRINTF(buf, sizeof buf, "%s" BIN2DATA_DIR, p); + p = buf; + +#ifndef _WIN32 /* *nix paltform */ + if (!pathExists(p)) + p = DATADIR; /* last resort */ #endif - } } - setMainValue ("libdir", p); + setIncludePath(p); + setLibPath(p); + + setMainValue ("datadir", p); } static void @@ -1885,8 +1895,7 @@ main (int argc, char **argv, char **envp) initValues (); setBinPaths(argv[0]); - setIncludePath(argv[0]); - setLibPath(argv[0]); + setDataPaths(argv[0]); /* initMem() is expensive, but initMem() must called before port->finaliseOptions (). -- 2.47.2