##############################################################################
# Copyright 2019-2022,2024 Thomas E. Dickey                                  #
# Copyright 1998-2015,2018 Free Software Foundation, Inc.                    #
#                                                                            #
# Permission is hereby granted, free of charge, to any person obtaining a    #
# copy of this software and associated documentation files (the "Software"), #
# to deal in the Software without restriction, including without limitation  #
# the rights to use, copy, modify, merge, publish, distribute, distribute    #
# with modifications, sublicense, and/or sell copies of the Software, and to #
# permit persons to whom the Software is furnished to do so, subject to the  #
# following conditions:                                                      #
#                                                                            #
# The above copyright notice and this permission notice shall be included in #
# all copies or substantial portions of the Software.                        #
#                                                                            #
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   #
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL    #
# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      #
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    #
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER        #
# DEALINGS IN THE SOFTWARE.                                                  #
#                                                                            #
# Except as contained in this notice, the name(s) of the above copyright     #
# holders shall not be used in advertising or otherwise to promote the sale, #
# use or other dealings in this Software without prior written               #
# authorization.                                                             #
##############################################################################
#
#  Author:  Juergen Pfeifer, 1996
#     and:  Thomas E. Dickey, 1997
#
#  $Id: Makefile.in,v 1.105 2024/08/10 17:55:15 tom Exp $
#
.SUFFIXES:

SHELL		= @SHELL@
VPATH		= @srcdir@
THIS		= Makefile

x		= @EXEEXT@

top_srcdir	= @top_srcdir@
DESTDIR		= @DESTDIR@
srcdir		= @srcdir@
prefix		= @prefix@
exec_prefix	= @exec_prefix@
bindir		= @bindir@
includedir	= @includedir@

BINDIR		= $(DESTDIR)$(bindir@MERGE_PREFIX@)

INSTALL		= @INSTALL@ @INSTALL_OPT_O@
INSTALL_SCRIPT	= @INSTALL_SCRIPT@
INSTALL_DATA	= @INSTALL_DATA@

AWK		= @AWK@
LN_S		= @LN_S@

CC		= @CC@
HOST_CC		= @BUILD_CC@

CFLAGS		= @CFLAGS@ @EXTRA_CFLAGS@
HOST_CFLAGS	= @BUILD_CFLAGS@

CPPFLAGS	= @CPPFLAGS@
HOST_CPPFLAGS	= @ACPPFLAGS@ @BUILD_CPPFLAGS@ \
		  -DHAVE_CONFIG_H -I$(srcdir)

CCFLAGS		= $(HOST_CPPFLAGS) $(HOST_CFLAGS)
CFLAGS_NORMAL	= $(CCFLAGS) -DNCURSES_STATIC
CFLAGS_DEBUG	= $(CCFLAGS) -DNCURSES_STATIC @CC_G_OPT@ -DTRACE
CFLAGS_PROFILE	= $(CCFLAGS) -DNCURSES_STATIC -pg
CFLAGS_SHARED	= $(CCFLAGS) @CC_SHARED_OPTS@

CFLAGS_DEFAULT	= $(CFLAGS_@DFT_UPR_MODEL@)

REL_VERSION	= @cf_cv_rel_version@
ABI_VERSION	= @cf_cv_abi_version@
LOCAL_LIBDIR	= @top_builddir@/lib

LINK		= $(HOST_CC)
LDFLAGS		= @LDFLAGS@
LIBS		= @LIBS@

# For the wide-character configuration combined with broken_linker, we need
# addresses of ACS_xxx constants, which requires linking with the newly built
# ncurses library.  If cross-compiling, the developer has to fill in a workable
# native library for this purpose.
NATIVE_LDFLAGS	= @LD_MODEL@ $(LOCAL_LIBS) @TINFO_LDFLAGS2@ $(LDFLAGS) @LIBS@ @LOCAL_LDFLAGS2@ $(LDFLAGS) @TINFO_LIBS@
CROSS_LDFLAGS	= @BUILD_LDFLAGS@ @BUILD_LIBS@

ACTUAL_LDFLAGS	= @ADAGEN_LDFLAGS@

RANLIB		= @RANLIB@

M4		= m4
M4FLAGS		= -DNCURSES_EXT_FUNCS=@NCURSES_EXT_FUNCS@

ADACURSES_CONFIG = adacurses@USE_CFG_SUFFIX@-config

WRAPPER		= @NCURSES_SHLIB2@

PROG_GENERATE	= ./generate$x
GENERATE	= $(PROG_GENERATE) '@USE_ARG_SUFFIX@'
DEL_ADAMODE	= sed -e '/^\-\-\ \ \-\*\-\ ada\ \-\*\-.*/d'

GNATHTML	= `command -v gnathtml || command -v gnathtml.pl`

################################################################################
ALIB            = @cf_ada_package@
ABASE		= $(ALIB)-curses

ADA_SRCDIR	= ../src

GEN_TARGETS     = options.m4						\
		  $(ADA_SRCDIR)/$(ABASE).ads				\
		  $(ADA_SRCDIR)/$(ABASE).adb				\
		  $(ADA_SRCDIR)/$(ABASE)-aux.ads			\
		  $(ADA_SRCDIR)/$(ABASE)-trace.ads			\
		  $(ADA_SRCDIR)/$(ABASE)-menus.ads			\
		  $(ADA_SRCDIR)/$(ABASE)-forms.ads			\
		  $(ADA_SRCDIR)/$(ABASE)-mouse.ads			\
		  $(ADA_SRCDIR)/$(ABASE)-panels.ads			\
		  $(ADA_SRCDIR)/$(ABASE)-menus-menu_user_data.ads	\
		  $(ADA_SRCDIR)/$(ABASE)-menus-item_user_data.ads	\
		  $(ADA_SRCDIR)/$(ABASE)-forms-form_user_data.ads	\
		  $(ADA_SRCDIR)/$(ABASE)-forms-field_types.ads		\
		  $(ADA_SRCDIR)/$(ABASE)-forms-field_user_data.ads	\
		  $(ADA_SRCDIR)/$(ABASE)-panels-user_data.ads		\
		  $(ADA_SRCDIR)/$(ABASE)_constants.ads

GEN_SRC		= $(srcdir)/$(ABASE).ads.m4				\
		  $(srcdir)/$(ABASE).adb.m4				\
		  $(srcdir)/$(ABASE)-aux.ads.m4				\
		  $(srcdir)/$(ABASE)-trace.ads.m4			\
		  $(srcdir)/$(ABASE)-menus.ads.m4			\
		  $(srcdir)/$(ABASE)-forms.ads.m4			\
		  $(srcdir)/$(ABASE)-mouse.ads.m4			\
		  $(srcdir)/$(ABASE)-panels.ads.m4			\
		  $(srcdir)/$(ABASE)-menus-menu_user_data.ads.m4	\
		  $(srcdir)/$(ABASE)-menus-item_user_data.ads.m4	\
		  $(srcdir)/$(ABASE)-forms-form_user_data.ads.m4	\
		  $(srcdir)/$(ABASE)-forms-field_types.ads.m4		\
		  $(srcdir)/$(ABASE)-forms-field_user_data.ads.m4	\
		  $(srcdir)/$(ABASE)-panels-user_data.ads.m4

################################################################################

@MAKE_PHONY@.PHONY :	all
@MAKE_PHONY@.PHONY :	clean
@MAKE_PHONY@.PHONY :	distclean
@MAKE_PHONY@.PHONY :	install
@MAKE_PHONY@.PHONY :	install.libs
@MAKE_PHONY@.PHONY :	libs
@MAKE_PHONY@.PHONY :	mostlyclean
@MAKE_PHONY@.PHONY :	realclean
@MAKE_PHONY@.PHONY :	sources
@MAKE_PHONY@.PHONY :	uninstall
@MAKE_PHONY@.PHONY :	uninstall.libs

all \
libs :	$(GEN_TARGETS)
	@echo made $@

sources:

$(BINDIR) :
	mkdir -p $@

install \
install.libs :: \
		$(GEN_TARGETS) \
		$(BINDIR) \
		$(ADACURSES_CONFIG)
	$(INSTALL_SCRIPT) $(ADACURSES_CONFIG) $(BINDIR)/$(ADACURSES_CONFIG)

uninstall \
uninstall.libs ::
	-rm -f $(BINDIR)/$(ADACURSES_CONFIG)

$(PROG_GENERATE):  gen.o
	@ECHO_LD@ $(LINK) $(CFLAGS_NORMAL) gen.o $(ACTUAL_LDFLAGS) -o $@

gen.o:	$(srcdir)/gen.c
	$(HOST_CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/gen.c

$(ADA_SRCDIR)/$(ABASE)_constants.ads: $(PROG_GENERATE)
	$(WRAPPER) "$(GENERATE) $@"
################################################################################
$(ADA_SRCDIR)/$(ABASE).ads: 	$(srcdir)/$(ABASE).ads.m4 \
				$(srcdir)/normal.m4 \
				options.m4
	$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
	$(srcdir)/$(ABASE).ads.m4 |\
	$(DEL_ADAMODE) >$@

$(ADA_SRCDIR)/$(ABASE).adb: 	$(srcdir)/$(ABASE).adb.m4 \
				$(srcdir)/normal.m4
	$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
	$(srcdir)/$(ABASE).adb.m4 |\
	$(DEL_ADAMODE) >$@

$(ADA_SRCDIR)/$(ABASE)-aux.ads: $(srcdir)/$(ABASE)-aux.ads.m4 \
				$(srcdir)/normal.m4
	$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
	$(srcdir)/$(ABASE)-aux.ads.m4 |\
	$(DEL_ADAMODE) >$@

$(ADA_SRCDIR)/$(ABASE)-trace.ads: $(srcdir)/$(ABASE)-trace.ads.m4 \
				  $(srcdir)/normal.m4
	$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
	$(srcdir)/$(ABASE)-trace.ads.m4 |\
	$(DEL_ADAMODE) >$@

$(ADA_SRCDIR)/$(ABASE)-menus.ads: $(srcdir)/$(ABASE)-menus.ads.m4 \
				  $(srcdir)/normal.m4
	$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
	$(srcdir)/$(ABASE)-menus.ads.m4 |\
	$(DEL_ADAMODE) >$@

$(ADA_SRCDIR)/$(ABASE)-forms.ads: $(srcdir)/$(ABASE)-forms.ads.m4 \
				  $(srcdir)/normal.m4
	$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
	$(srcdir)/$(ABASE)-forms.ads.m4 |\
	$(DEL_ADAMODE) >$@

$(ADA_SRCDIR)/$(ABASE)-mouse.ads: $(srcdir)/$(ABASE)-mouse.ads.m4 \
				  $(srcdir)/normal.m4
	$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
	$(srcdir)/$(ABASE)-mouse.ads.m4 |\
	$(DEL_ADAMODE) >$@

$(ADA_SRCDIR)/$(ABASE)-panels.ads: $(srcdir)/$(ABASE)-panels.ads.m4 \
				   $(srcdir)/normal.m4
	$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
	$(srcdir)/$(ABASE)-panels.ads.m4 |\
	$(DEL_ADAMODE) >$@

$(ADA_SRCDIR)/$(ABASE)-menus-menu_user_data.ads: \
		$(srcdir)/$(ABASE)-menus-menu_user_data.ads.m4 \
		$(srcdir)/normal.m4
	$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
	$(srcdir)/$(ABASE)-menus-menu_user_data.ads.m4 |\
	$(DEL_ADAMODE) >$@

$(ADA_SRCDIR)/$(ABASE)-menus-item_user_data.ads: \
		$(srcdir)/$(ABASE)-menus-item_user_data.ads.m4 \
		$(srcdir)/normal.m4
	$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
	$(srcdir)/$(ABASE)-menus-item_user_data.ads.m4 |\
	$(DEL_ADAMODE) >$@

$(ADA_SRCDIR)/$(ABASE)-forms-form_user_data.ads: \
		$(srcdir)/$(ABASE)-forms-form_user_data.ads.m4 \
		$(srcdir)/normal.m4
	$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
	$(srcdir)/$(ABASE)-forms-form_user_data.ads.m4 |\
	$(DEL_ADAMODE) >$@

$(ADA_SRCDIR)/$(ABASE)-forms-field_types.ads: \
		$(srcdir)/$(ABASE)-forms-field_types.ads.m4 \
		$(srcdir)/normal.m4
	$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
	$(srcdir)/$(ABASE)-forms-field_types.ads.m4 |\
	$(DEL_ADAMODE) >$@

$(ADA_SRCDIR)/$(ABASE)-forms-field_user_data.ads: \
		$(srcdir)/$(ABASE)-forms-field_user_data.ads.m4 \
		$(srcdir)/normal.m4
	$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
	$(srcdir)/$(ABASE)-forms-field_user_data.ads.m4 |\
	$(DEL_ADAMODE) >$@

$(ADA_SRCDIR)/$(ABASE)-panels-user_data.ads: \
		$(srcdir)/$(ABASE)-panels-user_data.ads.m4 \
		$(srcdir)/normal.m4
	$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
	$(srcdir)/$(ABASE)-panels-user_data.ads.m4 |\
	$(DEL_ADAMODE) >$@

install.progs ::

tags:
	ctags *.[ch]

@MAKE_UPPER_TAGS@TAGS:
@MAKE_UPPER_TAGS@	etags *.[ch]

mostlyclean ::
	-rm -f a.out core $(PROG_GENERATE) *.o

clean :: mostlyclean
	-rm -f options.m4
	-rm -f $(GEN_TARGETS) instab.tmp *.ad[bs] *.html *.ali *.tmp

distclean :: clean
	-rm -f $(ADACURSES_CONFIG)
	-rm -f Makefile

realclean :: distclean

HTML_DIR = @ADAHTML_DIR@

options.m4 :
	$(SHELL) -c "if [ @cf_cv_enable_sigwinch@ = 0 ]; \
		then \
			dashes='   --'; \
		else \
			dashes='';\
		fi; \
		echo \"define(OPT_KEY_RESIZE,\\\`\$$dashes')dnl\" > $@"

instab.tmp : table.m4 $(GEN_SRC)
	@rm -f $@
	@for f in $(GEN_SRC) ; do \
	  $(M4) $(M4FLAGS) -DM4MACRO=table.m4 $$f | $(DEL_ADAMODE) >> $@ ;\
	done;

TABLE_TITLE=Correspondence between ncurses C and Ada functions

$(HTML_DIR)/table.html : instab.tmp
	@-touch $@
	@-chmod +w $@
	@echo '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">' > $@
	@echo '<html>' >> $@
	@echo '<head>' >> $@
	@echo '<title>$(TABLE_TITLE)</title>' >>$@
	@echo '</head>' >> $@
	@echo '<body>' >> $@
	@echo '<h1>$(TABLE_TITLE)</h1>' >>$@
	@echo '<h2>Sorted by C function name</h2>' >>$@
	@echo '<table align="center" border summary="$(TABLE_TITLE)">' >>$@
	@echo '<tr align="left">' >>$@
	@echo '<th>C name</th><th>Ada name</th><th>man page</th></tr>' >>$@
	@sort < instab.tmp >> $@
	@echo '</table></body></html>' >>$@
	@rm -f instab.tmp

adahtml:
	test -n "$(GNATHTML)" || exit 1
	@find $(HTML_DIR) -type f -exec rm -f {} \;
	@mkdir -p $(HTML_DIR)
	( cp -p ../src/*.ad[sb] . && chmod +w *.ad[sb] )
@USE_OLD_MAKERULES@	ln -sf ../src/*.ali .
@USE_GNAT_PROJECTS@	ln -sf ../static-ali/*.ali .
	@echo "Filtering generated files"
	@for f in $(GEN_SRC); do \
	   h=`basename $$f` ;\
	   g=`basename $$f .ads.m4` ;\
	   if test "$$g" != "$$h" ; then \
	      $(M4) $(M4FLAGS) -DM4MACRO=html.m4 $$f | $(DEL_ADAMODE) > $$g.ads ;\
	      echo "... $$g.ads" ;\
	   fi \
	done
	@-rm -f $(HTML_DIR)/$(ALIB)*.htm*
	$(GNATHTML) -d -f $(ALIB)*.ads
	for f in html/$(ALIB)*.htm*; do \
	   a=`basename $$f` ; \
	   sed -e 's/You may also.*body.*//' <$$f |\
	   sed -e 's%\<GNAT\>%<strong>GNAT</strong>%g' |\
	   sed -e 's%&lt;A HREF%<A HREF%g' |\
	   sed -e 's%"&gt;%">%g' |\
	   sed -e 's%#1A\([[:space:]]*NAME="[^"]*"\)#2%<A\1>%' |\
	   sed -e 's%#1/A#2%</A>%' |\
	   sed -e 's/3X/3x/g' |\
	   sed -e 's/$$\([ABCDEFGHIJKLMNOPQRSTUVWXZabcdefghijklmnopqrstuvwxz0123456789_]*:.*\)\$$/@\1@/' |\
	   sed -e 's%&lt;/A&gt;%</A>%g' > $$a.tmp ;\
	   mv $$a.tmp $$f ;\
	done
	@rm -f *.ad[sb] *.ali *.tmp
	@for f in funcs.htm main.htm ; do \
	  sed -e "\%<A HREF=funcs/ .htm>\[ \]</A>%d" < html/$$f > $$f ;\
	  mv $$f html/$$f ;\
	done
	@rm -f "html/funcs/ .htm"
	@cp -pdrf html/* $(HTML_DIR)/
	@rm -rf html

html : adahtml $(HTML_DIR)/table.html
	@echo made $@

###############################################################################
# The remainder of this file is automatically generated during configuration
###############################################################################
