# Copyright (C) 2010-2014 Free Software Foundation, Inc. # Makefile for building a staged copy of the data-directory. # This file is part of GDB. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . srcdir = @srcdir@ SYSCALLS_SRCDIR = $(srcdir)/../syscalls PYTHON_SRCDIR = $(srcdir)/../python/lib GUILE_SRCDIR = $(srcdir)/../guile/lib SYSTEM_GDBINIT_SRCDIR = $(srcdir)/../system-gdbinit VPATH = $(srcdir):$(SYSCALLS_SRCDIR):$(PYTHON_SRCDIR):$(GUILE_SRCDIR):$(SYSTEM_GDBINIT_SRCDIR) top_srcdir = @top_srcdir@ top_builddir = @top_builddir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ datadir = @datadir@ SHELL = @SHELL@ LN_S = @LN_S@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_DIR = $(SHELL) $(srcdir)/../../mkinstalldirs GDB_DATADIR = @GDB_DATADIR@ SYSCALLS_DIR = syscalls SYSCALLS_INSTALL_DIR = $(DESTDIR)$(GDB_DATADIR)/$(SYSCALLS_DIR) SYSCALLS_FILES = \ gdb-syscalls.dtd \ arm-linux.xml \ ppc-linux.xml ppc64-linux.xml \ i386-linux.xml amd64-linux.xml \ sparc-linux.xml sparc64-linux.xml \ mips-o32-linux.xml mips-n32-linux.xml mips-n64-linux.xml \ s390-linux.xml s390x-linux.xml PYTHON_DIR = python PYTHON_INSTALL_DIR = $(DESTDIR)$(GDB_DATADIR)/$(PYTHON_DIR) PYTHON_FILE_LIST = \ gdb/__init__.py \ gdb/frames.py \ gdb/FrameIterator.py \ gdb/FrameDecorator.py \ gdb/types.py \ gdb/printing.py \ gdb/prompt.py \ gdb/xmethod.py \ gdb/command/bound_registers.py \ gdb/command/__init__.py \ gdb/command/xmethods.py \ gdb/command/frame_filters.py \ gdb/command/type_printers.py \ gdb/command/pretty_printers.py \ gdb/command/prompt.py \ gdb/command/explore.py \ gdb/function/__init__.py \ gdb/function/strfns.py @HAVE_PYTHON_TRUE@PYTHON_FILES = $(PYTHON_FILE_LIST) @HAVE_PYTHON_FALSE@PYTHON_FILES = GUILE_DIR = guile GUILE_INSTALL_DIR = $(DESTDIR)$(GDB_DATADIR)/$(GUILE_DIR) GUILE_SOURCE_FILES = \ ./gdb.scm \ gdb/boot.scm \ gdb/experimental.scm \ gdb/init.scm \ gdb/iterator.scm \ gdb/printing.scm \ gdb/support.scm \ gdb/types.scm 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 ) 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 = \ elinos.py \ wrs-linux.py FLAGS_TO_PASS = \ "prefix=$(prefix)" \ "exec_prefix=$(exec_prefix)" \ "infodir=$(infodir)" \ "datarootdir=$(datarootdir)" \ "docdir=$(docdir)" \ "htmldir=$(htmldir)" \ "pdfdir=$(pdfdir)" \ "libdir=$(libdir)" \ "mandir=$(mandir)" \ "datadir=$(datadir)" \ "includedir=$(includedir)" \ "against=$(against)" \ "DESTDIR=$(DESTDIR)" \ "AR=$(AR)" \ "AR_FLAGS=$(AR_FLAGS)" \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ "CXX=$(CXX)" \ "CXXFLAGS=$(CXXFLAGS)" \ "DLLTOOL=$(DLLTOOL)" \ "LDFLAGS=$(LDFLAGS)" \ "RANLIB=$(RANLIB)" \ "MAKEINFO=$(MAKEINFO)" \ "MAKEHTML=$(MAKEHTML)" \ "MAKEHTMLFLAGS=$(MAKEHTMLFLAGS)" \ "INSTALL=$(INSTALL)" \ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ "INSTALL_DATA=$(INSTALL_DATA)" \ "RUNTEST=$(RUNTEST)" \ "RUNTESTFLAGS=$(RUNTESTFLAGS)" .PHONY: all all: stamp-syscalls stamp-python stamp-guile stamp-system-gdbinit # For portability's sake, we need to handle systems that don't have # symbolic links. stamp-syscalls: Makefile $(SYSCALLS_FILES) rm -rf ./$(SYSCALLS_DIR) mkdir ./$(SYSCALLS_DIR) files='$(SYSCALLS_FILES)' ; \ for file in $$files ; do \ f=$(SYSCALLS_SRCDIR)/$$file ; \ if test -f $$f ; then \ $(INSTALL_DATA) $$f ./$(SYSCALLS_DIR) ; \ fi ; \ done touch $@ .PHONY: clean-syscalls clean-syscalls: rm -rf $(SYSCALLS_DIR) rm -f stamp-syscalls # This target is responsible for properly installing the syscalls' # XML files in the system. .PHONY: install-syscalls install-syscalls: $(INSTALL_DIR) $(SYSCALLS_INSTALL_DIR) files='$(SYSCALLS_FILES)' ; \ for file in $$files; do \ f=$(SYSCALLS_SRCDIR)/$$file ; \ if test -f $$f ; then \ $(INSTALL_DATA) $$f $(SYSCALLS_INSTALL_DIR) ; \ fi ; \ done .PHONY: uninstall-syscalls uninstall-syscalls: files='$(SYSCALLS_FILES)' ; \ for file in $$files ; do \ slashdir=`echo "/$$file" | sed 's,/[^/]*$$,,'` ; \ rm -f $(SYSCALLS_INSTALL_DIR)/$$file ; \ while test "x$$file" != "x$$slashdir" ; do \ rmdir 2>/dev/null "$(SYSCALLS_INSTALL_DIR)$$slashdir" ; \ file="$$slashdir" ; \ slashdir=`echo "$$file" | sed 's,/[^/]*$$,,'` ; \ done \ done stamp-python: Makefile $(PYTHON_FILES) rm -rf ./$(PYTHON_DIR) files='$(PYTHON_FILES)' ; \ if test "x$$files" != x ; then \ for file in $$files ; do \ dir=`echo "$$file" | sed 's,/[^/]*$$,,'` ; \ $(INSTALL_DIR) ./$(PYTHON_DIR)/$$dir ; \ $(INSTALL_DATA) $(PYTHON_SRCDIR)/$$file ./$(PYTHON_DIR)/$$dir ; \ done ; \ fi touch $@ .PHONY: clean-python clean-python: rm -rf $(PYTHON_DIR) rm -f stamp-python .PHONY: install-python install-python: files='$(PYTHON_FILES)' ; \ if test "x$$files" != x ; then \ for file in $$files ; do \ dir=`echo "$$file" | sed 's,/[^/]*$$,,'` ; \ $(INSTALL_DIR) $(PYTHON_INSTALL_DIR)/$$dir ; \ $(INSTALL_DATA) ./$(PYTHON_DIR)/$$file $(PYTHON_INSTALL_DIR)/$$dir ; \ done ; \ fi .PHONY: uninstall-python uninstall-python: files='$(PYTHON_FILES)' ; \ if test "x$$files" != x ; then \ for file in $$files ; do \ slashdir=`echo "/$$file" | sed 's,/[^/]*$$,,'` ; \ rm -f $(PYTHON_INSTALL_DIR)/$$file ; \ while test "x$$file" != "x$$slashdir" ; do \ rmdir 2>/dev/null "$(PYTHON_INSTALL_DIR)$$slashdir" ; \ file="$$slashdir" ; \ slashdir=`echo "$$file" | sed 's,/[^/]*$$,,'` ; \ done \ done ; \ fi stamp-guile: Makefile $(GUILE_SOURCE_FILES) rm -rf ./$(GUILE_DIR) 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 $@ .PHONY: clean-guile clean-guile: rm -rf $(GUILE_DIR) rm -f stamp-guile .PHONY: install-guile install-guile: files='$(GUILE_FILES)' ; \ if test "x$$files" != x ; then \ for file in $$files ; do \ dir=`echo "$$file" | sed 's,/[^/]*$$,,'` ; \ $(INSTALL_DIR) $(GUILE_INSTALL_DIR)/$$dir ; \ $(INSTALL_DATA) ./$(GUILE_DIR)/$$file $(GUILE_INSTALL_DIR)/$$dir ; \ done ; \ fi .PHONY: uninstall-guile uninstall-guile: files='$(GUILE_FILES)' ; \ if test "x$$files" != x ; then \ for file in $$files ; do \ slashdir=`echo "/$$file" | sed 's,/[^/]*$$,,'` ; \ rm -f $(GUILE_INSTALL_DIR)/$$file ; \ while test "x$$file" != "x$$slashdir" ; do \ rmdir 2>/dev/null "$(GUILE_INSTALL_DIR)$$slashdir" ; \ file="$$slashdir" ; \ slashdir=`echo "$$file" | sed 's,/[^/]*$$,,'` ; \ done \ done ; \ fi stamp-system-gdbinit: Makefile $(SYSTEM_GDBINIT_FILES) rm -rf ./$(SYSTEM_GDBINIT_DIR) mkdir ./$(SYSTEM_GDBINIT_DIR) files='$(SYSTEM_GDBINIT_FILES)' ; \ for file in $$files ; do \ f=$(SYSTEM_GDBINIT_SRCDIR)/$$file ; \ if test -f $$f ; then \ $(INSTALL_DATA) $$f ./$(SYSTEM_GDBINIT_DIR) ; \ fi ; \ done touch $@ .PHONY: clean-system-gdbinit clean-system-gdbinit: rm -rf $(SYSTEM_GDBINIT_DIR) rm -f stamp-system-gdbinit .PHONY: install-system-gdbinit install-system-gdbinit: $(INSTALL_DIR) $(SYSTEM_GDBINIT_INSTALL_DIR) files='$(SYSTEM_GDBINIT_FILES)' ; \ for file in $$files; do \ f=$(SYSTEM_GDBINIT_SRCDIR)/$$file ; \ if test -f $$f ; then \ $(INSTALL_DATA) $$f $(SYSTEM_GDBINIT_INSTALL_DIR) ; \ fi ; \ done .PHONY: uninstall-system-gdbinit uninstall-system-gdbinit: files='$(SYSTEM_GDBINIT_FILES)' ; \ for file in $$files ; do \ slashdir=`echo "/$$file" | sed 's,/[^/]*$$,,'` ; \ rm -f $(SYSTEM_GDBINIT_INSTALL_DIR)/$$file ; \ while test "x$$file" != "x$$slashdir" ; do \ rmdir 2>/dev/null "$(SYSTEM_GDBINIT_INSTALL_DIR)$$slashdir" ; \ file="$$slashdir" ; \ slashdir=`echo "$$file" | sed 's,/[^/]*$$,,'` ; \ done \ done # Traditionally "install" depends on "all". But it may be useful # not to; for example, if the user has made some trivial change to a # source file and doesn't care about rebuilding or just wants to save the # time it takes for make to check that all is up to date. # install-only is intended to address that need. .PHONY: install install: all @$(MAKE) $(FLAGS_TO_PASS) install-only .PHONY: install-only install-only: install-syscalls install-python install-guile \ install-system-gdbinit .PHONY: uninstall uninstall: uninstall-syscalls uninstall-python uninstall-guile \ uninstall-system-gdbinit .PHONY: clean clean: clean-syscalls clean-python clean-guile clean-system-gdbinit .PHONY: maintainer-clean realclean distclean maintainer-clean realclean distclean: clean rm -f Makefile .PHONY: check installcheck info dvi pdf html .PHONY: install-info install-pdf install-html clean-info check installcheck: info dvi pdf html: install-info install-pdf install-html: clean-info: # GNU Make has an annoying habit of putting *all* the Makefile variables # into the environment, unless you include this target as a circumvention. # Rumor is that this will be fixed (and this target can be removed) # in GNU Make 4.0. .NOEXPORT: # GNU Make 3.63 has a different problem: it keeps tacking command line # overrides onto the definition of $(MAKE). This variable setting # will remove them. MAKEOVERRIDES= Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(MAKE) data-directory/Makefile