summaryrefslogtreecommitdiff
path: root/gdb/data-directory
diff options
context:
space:
mode:
authorDoug Evans <xdje42@gmail.com>2014-07-26 18:16:27 -0700
committerDoug Evans <xdje42@gmail.com>2014-07-26 18:16:27 -0700
commite76c5d173bbf7137555919dd136004a7c0118af7 (patch)
tree92e8106c379879427bb0ce570c3d0dece75dc020 /gdb/data-directory
parent186fcde0c6134aed28526d925b1360db95d47171 (diff)
downloadbinutils-gdb-e76c5d173bbf7137555919dd136004a7c0118af7.tar.gz
PR guile/17146
* acinclude.m4 (GDB_GUILE_PROGRAM_NAMES): New macro. (GDB_GUILD_TARGET_FLAG, GDB_TRY_GUILD): New macros. * configure.ac: Try to use guild to compile an scm file, if it fails then disable guile support. * configure: Regenerate. * data-directory/Makefile.in (GUILE_SOURCE_FILES): Renamed from GUILE_FILE_LIST. (GUILE_COMPILED_FILES): New variable. (GUILE_FILES) Update. (GUILD, GUILD_TARGET_FLAG, GUILD_COMPILE_FLAGS): New variables. (stamp-guile): Compile scm files. * guile/guile.c (boot_guile_support): New function. (standard_throw_args_p): New function. (print_standard_throw_error, print_throw_error): New functions. (handle_boot_error): New function. (initialize_scheme_side): Rewrite to call boot_guile_support. * guile/lib/gdb/boot.scm: Update %load-compiled-path. Load gdb.go. * guile/lib/gdb/init.scm (%silence-compiler-warnings%): New function.
Diffstat (limited to 'gdb/data-directory')
-rw-r--r--gdb/data-directory/Makefile.in40
1 files changed, 35 insertions, 5 deletions
diff --git a/gdb/data-directory/Makefile.in b/gdb/data-directory/Makefile.in
index b05dba55496..509f8885a92 100644
--- a/gdb/data-directory/Makefile.in
+++ b/gdb/data-directory/Makefile.in
@@ -80,7 +80,8 @@ PYTHON_FILE_LIST = \
GUILE_DIR = guile
GUILE_INSTALL_DIR = $(DESTDIR)$(GDB_DATADIR)/$(GUILE_DIR)
-GUILE_FILE_LIST = \
+
+GUILE_SOURCE_FILES = \
./gdb.scm \
gdb/boot.scm \
gdb/experimental.scm \
@@ -90,9 +91,31 @@ GUILE_FILE_LIST = \
gdb/support.scm \
gdb/types.scm
-@HAVE_GUILE_TRUE@GUILE_FILES = $(GUILE_FILE_LIST)
+GUILE_COMPILED_FILES = \
+ ./gdb.go \
+ gdb/experimental.go \
+ gdb/iterator.go \
+ gdb/printing.go \
+ gdb/support.go \
+ gdb/types.go
+
+@HAVE_GUILE_TRUE@GUILE_FILES = $(GUILE_SOURCE_FILES) $(GUILE_COMPILED_FILES)
@HAVE_GUILE_FALSE@GUILE_FILES =
+GUILD = @GUILD@
+GUILD_TARGET_FLAG = @GUILD_TARGET_FLAG@
+
+# Flags passed to 'guild compile'.
+# Note: We can't use -Wunbound-variable because all the variables
+# defined in C aren't visible when we compile.
+# Note: To work around a guile 2.0.5 issue (it can't find gdb/init.scm even if
+# we pass -L <dir>) we have to compile in the directory containing gdb.scm.
+# We still need to pass "-L ." so that other modules are found.
+GUILD_COMPILE_FLAGS = \
+ $(GUILD_TARGET_FLAG) \
+ -Warity-mismatch -Wformat -Wunused-toplevel \
+ -L .
+
SYSTEM_GDBINIT_DIR = system-gdbinit
SYSTEM_GDBINIT_INSTALL_DIR = $(DESTDIR)$(GDB_DATADIR)/$(SYSTEM_GDBINIT_DIR)
SYSTEM_GDBINIT_FILES = \
@@ -222,15 +245,22 @@ uninstall-python:
done ; \
fi
-stamp-guile: Makefile $(GUILE_FILES)
+stamp-guile: Makefile $(GUILE_SOURCE_FILES)
rm -rf ./$(GUILE_DIR)
- files='$(GUILE_FILES)' ; \
- if test "x$$files" != x ; then \
+ if test "x$(GUILE_FILES)" != x ; then \
+ files='$(GUILE_SOURCE_FILES)' ; \
for file in $$files ; do \
dir=`echo "$$file" | sed 's,/[^/]*$$,,'` ; \
$(INSTALL_DIR) ./$(GUILE_DIR)/$$dir ; \
$(INSTALL_DATA) $(GUILE_SRCDIR)/$$file ./$(GUILE_DIR)/$$dir ; \
done ; \
+ files='$(GUILE_COMPILED_FILES)' ; \
+ cd ./$(GUILE_DIR) ; \
+ for go in $$files ; do \
+ source="`echo $$go | sed 's/\.go$$/.scm/'`" ; \
+ echo $(GUILD) compile $(GUILD_COMPILE_FLAGS) -o "$$go" "$$source" ; \
+ $(GUILD) compile $(GUILD_COMPILE_FLAGS) -o "$$go" "$$source" || exit 1 ; \
+ done ; \
fi
touch $@