# $Id: modules,v 1.4 2020/02/02 23:34:34 tom Exp $
##############################################################################
# Copyright 2020 Thomas E. Dickey                                            #
# Copyright 2010 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: Thomas E. Dickey	2010
#

# Library objects
# rootname				depend-spec	depend-body	unit
$(ALIB)					$(srcdir)	none		spec
$(ABASE)-aux				none		$(srcdir)	body
$(ABASE)				none		.		body
$(ABASE)-terminfo			$(srcdir)	$(srcdir)	body
$(ABASE)-termcap			$(srcdir)	$(srcdir)	body
$(ABASE)-putwin				$(srcdir)	$(srcdir)	body
$(ABASE)-trace				.		.		body
$(ABASE)-mouse				.		$(srcdir)	body
$(ABASE)-panels				.		$(srcdir)	body
$(ABASE)-menus				.		$(srcdir)	body
$(ABASE)-forms				.		$(srcdir)	body
$(ABASE)-forms-field_types		.		$(srcdir)	body
$(ABASE)-forms-field_types-alpha	$(srcdir)	$(srcdir)	body
$(ABASE)-forms-field_types-alphanumeric	$(srcdir)	$(srcdir)	body
$(ABASE)-forms-field_types-intfield	$(srcdir)	$(srcdir)	body
$(ABASE)-forms-field_types-numeric	$(srcdir)	$(srcdir)	body
$(ABASE)-forms-field_types-regexp	$(srcdir)	$(srcdir)	body
$(ABASE)-forms-field_types-enumeration	$(srcdir)	$(srcdir)	body
$(ABASE)-forms-field_types-ipv4_address	$(srcdir)	$(srcdir)	body
$(ABASE)-forms-field_types-user		$(srcdir)	$(srcdir)	body
$(ABASE)-forms-field_types-user-choice	$(srcdir)	$(srcdir)	body
$(ABASE)-text_io			$(srcdir)	$(srcdir)	body
$(ABASE)-text_io-aux			$(srcdir)	$(srcdir)	body
$(ABASE)-menus-menu_user_data		.		$(srcdir)	body
$(ABASE)-menus-item_user_data		.		$(srcdir)	body
$(ABASE)-forms-form_user_data		.		$(srcdir)	body
$(ABASE)-forms-field_user_data		.		$(srcdir)	body
$(ABASE)-forms-field_types-enumeration-ada $(srcdir)	$(srcdir)	body
$(ABASE)-panels-user_data		.		$(srcdir)	body
$(ABASE)-text_io-integer_io		$(srcdir)	$(srcdir)	body
$(ABASE)-text_io-float_io		$(srcdir)	$(srcdir)	body
$(ABASE)-text_io-fixed_io		$(srcdir)	$(srcdir)	body
$(ABASE)-text_io-decimal_io		$(srcdir)	$(srcdir)	body
$(ABASE)-text_io-enumeration_io		$(srcdir)	$(srcdir)	body
$(ABASE)-text_io-modular_io		$(srcdir)	$(srcdir)	body
$(ABASE)-text_io-complex_io		$(srcdir)	$(srcdir)	body
