# Copyright 1998 Free Software Foundation, Inc.

# 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

all: libtui.a

srcdir=@srcdir@
VPATH = @srcdir@

SHELL = @SHELL@

CC=@CC@
CFLAGS=@CFLAGS@
AR=@AR@
RANLIB=@RANLIB@

# Host and target-dependent makefile fragments come in here.
@host_makefile_frag@
@target_makefile_frag@
# End of host and target-dependent makefile fragments

# Where is our "include" directory?  Typically $(srcdir)/../include.
# This is essentially the header file directory for the library
# routines in libiberty.
INCLUDE_DIR =  $(srcdir)/../../include
INCLUDE_CFLAGS = -I$(INCLUDE_DIR)

# Configured by the --with-mmalloc option to configure.
MMALLOC = @MMALLOC@
MMALLOC_CFLAGS = @MMALLOC_CFLAGS@

# Where is the BFD library?  Typically in ../bfd.
BFD_DIR = ../../bfd
BFD_SRC = $(srcdir)/$(BFD_DIR)
BFD_CFLAGS = -I$(BFD_DIR) -I$(BFD_SRC)

# Where is the READLINE library?  Typically in ../readline.
READLINE_DIR = ../../readline
READLINE_SRC = $(srcdir)/$(READLINE_DIR)
READLINE_CFLAGS = -I$(READLINE_SRC)

# Where is the INTL library?  Typically in ../intl.
INTL_DIR = ../../intl
INTL_SRC = $(srcdir)/$(INTL_DIR)
INTL_CFLAGS = -I$(INTL_DIR) -I$(INTL_SRC)

# Where is the TCL library?  Typically in ../tcl.
TCL_CFLAGS = @TCLHDIR@

# Where is the TK library?  Typically in ../tk.
TK_CFLAGS = @TKHDIR@ @TK_BUILD_INCLUDES@

# Where is Itcl?  Typically in ../itcl.
ITCL_CFLAGS = @ITCLHDIR@

# Where is Tix?  Typically in ../tix.
TIX_CFLAGS = @TIXHDIR@

X11_CFLAGS = @TK_XINCLUDES@

ENABLE_IDE= @ENABLE_IDE@

GUI_CFLAGS_X = -I$(srcdir)/../../libgui/src

IDE_CFLAGS_X = -I$(srcdir)/../../libidetcl/src -I$(srcdir)/../../libide/src \
  `if [ x"$(ENABLE_IDE)" != x ] ; then \
    echo -DIDE -I$(srcdir)/../../ilu/runtime/mainloop;\
  fi`

IDE_CFLAGS=$(GUI_CFLAGS_X) $(IDE_CFLAGS_X)

ENABLE_CFLAGS= @ENABLE_CFLAGS@

# -I. for config files.
# -I$(srcdir) for gdb internal headers and possibly for gnu-regex.h also.
# -I$(srcdir)/config for more generic config files.

# It is also possible that you will need to add -I/usr/include/sys if
# your system doesn't have fcntl.h in /usr/include (which is where it
# should be according to Posix).
DEFS = @DEFS@
GDB_CFLAGS = -I. -I.. -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../config $(DEFS)

# M{H,T}_CFLAGS, if defined, have host- and target-dependent CFLAGS
# from the config directory.
GLOBAL_CFLAGS = $(MT_CFLAGS) $(MH_CFLAGS)
#PROFILE_CFLAGS = -pg

# INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros.
INTERNAL_CFLAGS = $(CFLAGS) $(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) \
	$(GDB_CFLAGS) $(READLINE_CFLAGS) $(BFD_CFLAGS) \
	$(MMALLOC_CFLAGS) $(INCLUDE_CFLAGS) $(INTL_CFLAGS) \
	$(ENABLE_CFLAGS)

HEADERS = tuiIO.h tuiData.h tuiGeneralWin.h tuiLayout.h tuiStack.h \
	  tuiSource.h tuiCommand.h tuiWin.h tuiDisassem.h \
	  tuiSourceWin.h tuiRegs.h tuiDataWin.h

SOURCES = tui.c tuiData.c tuiSource.c tuiStack.c tuiIO.c \
	  tuiGeneralWin.c tuiLayout.c tuiWin.c tuiCommand.c \
	  tuiDisassem.c tuiSourceWin.c tuiRegs.c tuiDataWin.c

OBJECTS = tui.o tuiData.o tuiSource.o tuiStack.o tuiIO.o \
	  tuiGeneralWin.o tuiLayout.o tuiWin.o tuiCommand.o \
	  tuiDisassem.o tuiSourceWin.o tuiRegs.o tuiDataWin.o \
	  tuiInit.o


# Prevent Sun make from putting in the machine type.  Setting
# TARGET_ARCH to nothing works for SunOS 3, 4.0, but not for 4.1.
.c.o:
	$(CC) -c $(INTERNAL_CFLAGS) $<
.SUFFIXES: .cpp
.c.cpp:
	$(CC) -E $(INTERNAL_CFLAGS) $< > $@

libtui.a: $(OBJECTS)
	rm -f libtui.a
	$(AR) rc libtui.a $(OBJECTS)
	$(RANLIB) libtui.a

tui.o: tui.c tui.h tuiData.h tuiLayout.h tuiIO.h tuiRegs.h tuiWin.h
tuiCommand.o: tui.h tuiData.h tuiWin.h tuiIO.h
tuiData.o: tui.h tuiData.h
tuiDataWin.o: tui.h tuiData.h tuiRegs.h
tuiDisassem.o: tui.h tuiData.h tuiLayout.h tuiSourceWin.h tuiStack.h
tuiGeneralWin.o: tui.h tuiData.h tuiGeneralWin.h
tuiIO.o: tui.h tuiData.h tuiIO.h tuiCommand.h tuiWin.h
tuiLayout.o: tui.h tuiData.h tuiGeneralWin.h tuiStack.h tuiRegs.h \
	tuiDisassem.h
tuiRegs.o: tui.h tuiData.h tuiLayout.h tuiWin.h
tuiSource.o: tui.h tuiData.h tuiStack.h tuiSourceWin.h tuiSource.h
tuiSourceWin.o: tui.h tuiData.h tuiStack.h tuiSourceWin.h tuiSource.h \
	tuiDisassem.h
tuiStack.o: tui.h tuiData.h tuiStack.h tuiSourceWin.h
tuiWin.o: tui.h tuiData.h tuiGeneralWin.h tuiStack.h tuiSourceWin.h \
	tuiDataWin.h

tuiInit.o: tuiInit.c
tuiInit.c: $(SOURCES)
	@echo Making tuiInit.c
	@rm -f init.c-tmp
	@echo '/* Do not modify this file.  */' >init.c-tmp
	@echo '/* It is created automatically by the Makefile.	*/'>>init.c-tmp
	@echo '#include "ansidecl.h"' >>init.c-tmp
	@echo 'extern void initialize_tui_files PARAMS ((void));' >>init.c-tmp
	@echo 'void initialize_tui_files PARAMS ((void)) {' >>init.c-tmp
	@-( cd $(srcdir) ; grep '^_initialize_[a-z_0-9A-Z]* *(' $(SOURCES) ) 2>/dev/null \
	| sed -e 's/^.*://' -e 's/^\([a-z_0-9A-Z]*\).*/  {extern void \1 PARAMS ((void)); \1 ();}/' >>init.c-tmp
	@echo '}' >>init.c-tmp
	@mv init.c-tmp tuiInit.c

clean:
	rm -f *.o *.a
