diff options
author | dos-reis <gdr@axiomatics.org> | 2010-11-30 00:35:51 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2010-11-30 00:35:51 +0000 |
commit | cadd6f77df5ad2f93d1c494525db8a192bed87b5 (patch) | |
tree | 1662ed293232382d988bac5e9c2fea089ea80b07 | |
parent | eadaa332441dbb0bbc710e4803cd73970859cc1f (diff) | |
download | open-axiom-cadd6f77df5ad2f93d1c494525db8a192bed87b5.tar.gz |
* etc/Makefile.in: Use the driver.
* driver/utils.c (get_suffix): New.
(option_value): Likewise.
(preprocess_arguments): Handle --translate and --build-databases.
* driver/main.c (upgrade_environment): Change argument type to
Command. Upgrade LD_LIBRARY_PATH too.
* boot/translator.boot (loadSystemRuntimeCore): Don't prefix the
shared library file name with the system path.
-rwxr-xr-x | configure | 20 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | src/ChangeLog | 11 | ||||
-rw-r--r-- | src/boot/translator.boot | 3 | ||||
-rw-r--r-- | src/driver/main.c | 11 | ||||
-rw-r--r-- | src/driver/utils.c | 26 | ||||
-rw-r--r-- | src/driver/utils.h | 3 | ||||
-rw-r--r-- | src/etc/Makefile.in | 5 |
8 files changed, 62 insertions, 19 deletions
@@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.65 for OpenAxiom 1.4.0-2010-11-28. +# Generated by GNU Autoconf 2.65 for OpenAxiom 1.4.0-2010-11-29. # # Report bugs to <open-axiom-bugs@lists.sf.net>. # @@ -701,8 +701,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='OpenAxiom' PACKAGE_TARNAME='openaxiom' -PACKAGE_VERSION='1.4.0-2010-11-28' -PACKAGE_STRING='OpenAxiom 1.4.0-2010-11-28' +PACKAGE_VERSION='1.4.0-2010-11-29' +PACKAGE_STRING='OpenAxiom 1.4.0-2010-11-29' PACKAGE_BUGREPORT='open-axiom-bugs@lists.sf.net' PACKAGE_URL='' @@ -1491,7 +1491,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures OpenAxiom 1.4.0-2010-11-28 to adapt to many kinds of systems. +\`configure' configures OpenAxiom 1.4.0-2010-11-29 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1566,7 +1566,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of OpenAxiom 1.4.0-2010-11-28:";; + short | recursive ) echo "Configuration of OpenAxiom 1.4.0-2010-11-29:";; esac cat <<\_ACEOF @@ -1677,7 +1677,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -OpenAxiom configure 1.4.0-2010-11-28 +OpenAxiom configure 1.4.0-2010-11-29 generated by GNU Autoconf 2.65 Copyright (C) 2009 Free Software Foundation, Inc. @@ -2569,7 +2569,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by OpenAxiom $as_me 1.4.0-2010-11-28, which was +It was created by OpenAxiom $as_me 1.4.0-2010-11-29, which was generated by GNU Autoconf 2.65. Invocation command line was $ $0 $@ @@ -5468,7 +5468,7 @@ fi # Define the identity of the package. PACKAGE='openaxiom' - VERSION='1.4.0-2010-11-28' + VERSION='1.4.0-2010-11-29' cat >>confdefs.h <<_ACEOF @@ -20961,7 +20961,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by OpenAxiom $as_me 1.4.0-2010-11-28, which was +This file was extended by OpenAxiom $as_me 1.4.0-2010-11-29, which was generated by GNU Autoconf 2.65. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -21027,7 +21027,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -OpenAxiom config.status 1.4.0-2010-11-28 +OpenAxiom config.status 1.4.0-2010-11-29 configured by $0, generated by GNU Autoconf 2.65, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 298e8526..e9d7a583 100644 --- a/configure.ac +++ b/configure.ac @@ -33,7 +33,7 @@ dnl Makefiles for building OpenAxiom interpreter, compiler, libraries, and dnl auxiliary tools where appropriate. dnl -AC_INIT([OpenAxiom], [1.4.0-2010-11-28], +AC_INIT([OpenAxiom], [1.4.0-2010-11-29], [open-axiom-bugs@lists.sf.net]) dnl Most of the macros used in this configure.ac are defined in files diff --git a/src/ChangeLog b/src/ChangeLog index db11d90f..b106343c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,14 @@ +2010-11-29 Gabriel Dos Reis <gdr@cs.tamu.edu> + + * etc/Makefile.in: Use the driver. + * driver/utils.c (get_suffix): New. + (option_value): Likewise. + (preprocess_arguments): Handle --translate and --build-databases. + * driver/main.c (upgrade_environment): Change argument type to + Command. Upgrade LD_LIBRARY_PATH too. + * boot/translator.boot (loadSystemRuntimeCore): Don't prefix the + shared library file name with the system path. + 2010-11-28 Gabriel Dos Reis <gdr@cs.tamu.edu> * clef/: Add using directive at toplevel. diff --git a/src/boot/translator.boot b/src/boot/translator.boot index 191d958b..046b1f43 100644 --- a/src/boot/translator.boot +++ b/src/boot/translator.boot @@ -783,5 +783,4 @@ loadNativeModule m == loadSystemRuntimeCore() == %hasFeature KEYWORD::ECL or %hasFeature KEYWORD::GCL => nil - loadNativeModule strconc(systemLibraryDirectory(), - '"libopen-axiom-core",$NativeModuleExt) + loadNativeModule strconc('"libopen-axiom-core",$NativeModuleExt) diff --git a/src/driver/main.c b/src/driver/main.c index 3dd06ebe..1436d42c 100644 --- a/src/driver/main.c +++ b/src/driver/main.c @@ -79,13 +79,16 @@ namespace OpenAxiom { } static void - upgrade_environment(const char* sysdir) { + upgrade_environment(const Command* command) { + const char* sysdir = command->root_dir; augment_variable("TEXINPUTS", oa_concatenate_string(sysdir, OPENAXIOM_TEXINPUTS_PATH)); augment_variable("BIBINPUTS", oa_concatenate_string(sysdir, OPENAXIOM_BIBINPUTS_PATH)); - augment_variable("LD_LIBRARY_PATH", - oa_concatenate_string(sysdir, "/lib")); + const char* ldd_path = option_value(command, "--syslib"); + if (ldd_path == 0) + ldd_path = oa_concatenate_string(sysdir, "/lib"); + augment_variable("LD_LIBRARY_PATH", ldd_path); publish_systemdir(sysdir); } @@ -115,7 +118,7 @@ main(int argc, char* argv[]) using namespace OpenAxiom; Command command; Driver driver = preprocess_arguments(&command, argc, argv); - upgrade_environment(command.root_dir); + upgrade_environment(&command); switch (driver) { case null_driver: diff --git a/src/driver/utils.c b/src/driver/utils.c index 42b0183d..89e1ad4c 100644 --- a/src/driver/utils.c +++ b/src/driver/utils.c @@ -86,6 +86,14 @@ namespace OpenAxiom { exec_path() { } + static const char* + get_suffix(const char* first, const char* last, const char* seq) { + for (; first < last; ++first, ++seq) + if (*first != *seq) + return 0; + return seq; + } + // -- Return non-null if `lhs' is a prefix of `rhs'. When non-null // -- the pointer points to the '=' character that starts of the // -- value supplied to the argument. @@ -97,6 +105,21 @@ namespace OpenAxiom { return rhs + N - 1; } + const char* + option_value(const Command* command, const char* opt) { + const int n = strlen(opt); + for (int i = 1; i < command->core.argc; ++i) { + const char* arg = command->core.argv[i]; + if (strlen(arg) < n) + continue; + if(const char* val = get_suffix(opt, opt + n, arg)) { + if (*val++ == '=') + return val; + break; + } + } + return 0; + } /* Return a path to the running system, either as specified on command line through --system=, or as specified at configuration time. */ @@ -311,7 +334,8 @@ preprocess_arguments(Command* command, int argc, char** argv) if (strcmp(argv[i], "--script") == 0) driver = script_driver; else if(strcmp(argv[i], "--compile") == 0 - or strcmp(argv[i], "--translate") == 0) + or strcmp(argv[i], "--translate") == 0 + or strcmp(argv[i], "--build-databases") == 0) driver = compiler_driver; else if (strcmp(argv[i], "--make") == 0) driver = linker_driver; diff --git a/src/driver/utils.h b/src/driver/utils.h index 10f47f79..6c55f1c0 100644 --- a/src/driver/utils.h +++ b/src/driver/utils.h @@ -93,6 +93,9 @@ namespace OpenAxiom { const char* get_systemdir(int argc, char*[]); const char* make_path_for(const char*, Driver); + // Return a pointer the string value associated with an option. + const char* option_value(const Command*, const char*); + int execute_core(const Command*, Driver); void build_rts_options(Command*, Driver); diff --git a/src/etc/Makefile.in b/src/etc/Makefile.in index 6052ffb7..1d2c05a5 100644 --- a/src/etc/Makefile.in +++ b/src/etc/Makefile.in @@ -29,8 +29,11 @@ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +DRIVER = ../driver/open-axiom$(EXEEX) -INTERPSYS = ../interp/interpsys$(EXEEXT) -- --system="$(AXIOM)" \ +INTERPSYS = \ + $(DRIVER) --execpath=../interp/interpsys$(EXEEXT) \ + --system="$(AXIOM)" \ --sysalg="$(axiom_src_datadir)/algebra/" openaxiom_databases = \ |